@seal-protocol/backendjs 0.0.130 → 0.0.132
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/lib/codegen/api/seal-client.d.ts +221 -107
- package/lib/codegen/api/seal-client.js +217 -117
- package/lib/codegen/model/index.d.ts +8 -5
- package/lib/codegen/model/index.js +8 -5
- package/lib/codegen/model/{seal-domain-info.d.ts → seal-get-order-stats-for-owner-response.d.ts} +6 -18
- package/lib/codegen/model/seal-get-rfq-activities-response.d.ts +31 -0
- package/lib/codegen/model/seal-order.d.ts +30 -0
- package/lib/codegen/model/seal-rfq-activities-order-by-property.d.ts +22 -0
- package/lib/codegen/model/seal-rfq-activities-order-by-property.js +28 -0
- package/lib/codegen/model/seal-rfq-activities-order-by.d.ts +31 -0
- package/lib/codegen/model/seal-rfq-activity.d.ts +75 -0
- package/lib/codegen/model/{seal-approval-type.d.ts → seal-rfq-activity.js} +4 -11
- package/lib/codegen/model/{seal-orders-order-by-property.d.ts → types-orders-order-by-property.d.ts} +1 -1
- package/lib/codegen/model/types-orders-order-by-property.js +37 -0
- package/lib/codegen/model/{seal-orders-order-by.d.ts → types-orders-order-by.d.ts} +7 -7
- package/lib/codegen/model/types-orders-order-by.js +15 -0
- package/lib/codegen/model/types-rfq-activity-type.d.ts +25 -0
- package/lib/codegen/model/types-rfq-activity-type.js +31 -0
- package/lib/utils/calculate-liquidity.d.ts +21 -1
- package/lib/utils/calculate-liquidity.js +54 -11
- package/lib/utils/calculate-required-permit.d.ts +36 -0
- package/lib/utils/calculate-required-permit.js +111 -0
- package/lib/utils/index.d.ts +3 -1
- package/lib/utils/index.js +20 -1
- package/package.json +1 -1
- package/lib/codegen/model/seal-approval-type.js +0 -28
- package/lib/codegen/model/seal-calculate-required-permit-response.d.ts +0 -74
- package/lib/codegen/model/seal-orders-order-by-property.js +0 -37
- /package/lib/codegen/model/{seal-calculate-required-permit-response.js → seal-get-order-stats-for-owner-response.js} +0 -0
- /package/lib/codegen/model/{seal-domain-info.js → seal-get-rfq-activities-response.js} +0 -0
- /package/lib/codegen/model/{seal-orders-order-by.js → seal-rfq-activities-order-by.js} +0 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ApprovalType = void 0;
|
|
4
|
+
exports.calculateRequiredPermitForOrder = calculateRequiredPermitForOrder;
|
|
5
|
+
const ethers_1 = require("ethers");
|
|
6
|
+
const calculate_liquidity_1 = require("./calculate-liquidity");
|
|
7
|
+
const abi_types_1 = require("../abi-types");
|
|
8
|
+
const maxUint32 = BigInt(Math.pow(2, 32) - 1);
|
|
9
|
+
var ApprovalType;
|
|
10
|
+
(function (ApprovalType) {
|
|
11
|
+
ApprovalType[ApprovalType["Eip2612"] = 1] = "Eip2612";
|
|
12
|
+
ApprovalType[ApprovalType["Permit2"] = 2] = "Permit2";
|
|
13
|
+
ApprovalType[ApprovalType["Erc20"] = 3] = "Erc20";
|
|
14
|
+
})(ApprovalType || (exports.ApprovalType = ApprovalType = {}));
|
|
15
|
+
async function calculateRequiredPermitForOrder(params) {
|
|
16
|
+
let { provider, client, inputToken, owner, amountIn, sealContract, expirationTimeSeconds, } = params;
|
|
17
|
+
const chainId = inputToken.chainId;
|
|
18
|
+
if (sealContract == null) {
|
|
19
|
+
const contracts = (await client.getSealContracts({
|
|
20
|
+
chainId
|
|
21
|
+
})).data.contracts;
|
|
22
|
+
if (contracts.length < 1) {
|
|
23
|
+
throw new Error("no contract support for the given chain");
|
|
24
|
+
}
|
|
25
|
+
sealContract = contracts[0];
|
|
26
|
+
}
|
|
27
|
+
const stats = (await client.getOrderStatsForOwner({
|
|
28
|
+
chainId, owner, tokenIn: inputToken.address,
|
|
29
|
+
})).data;
|
|
30
|
+
const ordersCount = BigInt(stats.count);
|
|
31
|
+
const ordersRemaining = BigInt(stats.remaining);
|
|
32
|
+
const requiredAllowance = ordersRemaining + amountIn;
|
|
33
|
+
const approvals = (await client.getTokenPermitApprovals({
|
|
34
|
+
owner, spender: sealContract.address, chainId,
|
|
35
|
+
})).data.approvals;
|
|
36
|
+
if (approvals.length > 0 && Number(approvals[0].sigDeadline.seconds) >= expirationTimeSeconds && (approvals[0].allowanceExpiration == null || Number(approvals[0].allowanceExpiration.seconds) >= expirationTimeSeconds)) {
|
|
37
|
+
const allowance = BigInt(approvals[0].allowance);
|
|
38
|
+
if (allowance >= requiredAllowance) {
|
|
39
|
+
return {
|
|
40
|
+
ordersCount,
|
|
41
|
+
ordersRemaining,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
let permit2 = (await client.getPermit2Contracts()).data.contracts.find(c => c.chainId == chainId);
|
|
46
|
+
const erc20Contract = abi_types_1.Erc20__factory.connect(inputToken.address, provider);
|
|
47
|
+
let { onChainAllowanceToPermit2Contract, permit2Nonce, isRequiredAmountCovered } = await (0, calculate_liquidity_1.fetchOnChainAllowance)({
|
|
48
|
+
provider, erc20Contract, owner, spender: sealContract.address,
|
|
49
|
+
permit2ContractAddress: permit2?.address, token: inputToken.address,
|
|
50
|
+
requiredAmount: requiredAllowance, deadlineUnixSeconds: expirationTimeSeconds,
|
|
51
|
+
});
|
|
52
|
+
if (isRequiredAmountCovered) {
|
|
53
|
+
return {
|
|
54
|
+
ordersCount,
|
|
55
|
+
ordersRemaining,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (inputToken.isErc2612 === true) {
|
|
59
|
+
const permitContract = abi_types_1.Erc20Permit__factory.connect(inputToken.address, provider);
|
|
60
|
+
const nonce = await permitContract.nonces(owner);
|
|
61
|
+
return {
|
|
62
|
+
ordersCount,
|
|
63
|
+
ordersRemaining,
|
|
64
|
+
permit: {
|
|
65
|
+
nonce,
|
|
66
|
+
allowance: ethers_1.MaxUint256,
|
|
67
|
+
approvalType: ApprovalType.Eip2612,
|
|
68
|
+
spender: sealContract.address,
|
|
69
|
+
domainInfo: {
|
|
70
|
+
name: inputToken.contractName,
|
|
71
|
+
version: inputToken.contractVersion,
|
|
72
|
+
verifyingContract: inputToken.address,
|
|
73
|
+
chainId,
|
|
74
|
+
},
|
|
75
|
+
sigDeadline: maxUint32,
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
// TODO isn't it better to ask the user to submit a permit2 allowance for onChainAllowanceToPermit2Contract,
|
|
80
|
+
// so he will be able to use permit2 from now on?
|
|
81
|
+
if (onChainAllowanceToPermit2Contract != null && onChainAllowanceToPermit2Contract >= requiredAllowance) {
|
|
82
|
+
return {
|
|
83
|
+
ordersCount,
|
|
84
|
+
ordersRemaining,
|
|
85
|
+
permit: {
|
|
86
|
+
nonce: permit2Nonce,
|
|
87
|
+
allowance: ethers_1.MaxUint256,
|
|
88
|
+
approvalType: ApprovalType.Permit2,
|
|
89
|
+
spender: sealContract.address,
|
|
90
|
+
domainInfo: {
|
|
91
|
+
name: permit2.domainSeparatorName,
|
|
92
|
+
version: permit2.domainSeparatorVersion,
|
|
93
|
+
verifyingContract: permit2.address,
|
|
94
|
+
chainId,
|
|
95
|
+
},
|
|
96
|
+
sigDeadline: maxUint32,
|
|
97
|
+
expiration: maxUint32,
|
|
98
|
+
},
|
|
99
|
+
permit2Contract: permit2,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
return {
|
|
103
|
+
ordersCount,
|
|
104
|
+
ordersRemaining,
|
|
105
|
+
permit: {
|
|
106
|
+
allowance: requiredAllowance,
|
|
107
|
+
approvalType: ApprovalType.Erc20,
|
|
108
|
+
spender: sealContract.address,
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
package/lib/utils/index.d.ts
CHANGED
|
@@ -1,2 +1,4 @@
|
|
|
1
|
-
export { LiquidityBreakdown, TransferPermission
|
|
1
|
+
export { LiquidityBreakdown, TransferPermission } from "./calculate-liquidity";
|
|
2
|
+
export { default as calculateLiquidity } from "./calculate-liquidity";
|
|
2
3
|
export { truncateFixedNumberToBigInt } from "./numbers";
|
|
4
|
+
export * from "./calculate-required-permit";
|
package/lib/utils/index.js
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
17
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
|
+
};
|
|
2
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
20
|
exports.truncateFixedNumberToBigInt = exports.calculateLiquidity = exports.LiquidityBreakdown = void 0;
|
|
4
21
|
var calculate_liquidity_1 = require("./calculate-liquidity");
|
|
5
22
|
Object.defineProperty(exports, "LiquidityBreakdown", { enumerable: true, get: function () { return calculate_liquidity_1.LiquidityBreakdown; } });
|
|
6
|
-
|
|
23
|
+
var calculate_liquidity_2 = require("./calculate-liquidity");
|
|
24
|
+
Object.defineProperty(exports, "calculateLiquidity", { enumerable: true, get: function () { return __importDefault(calculate_liquidity_2).default; } });
|
|
7
25
|
var numbers_1 = require("./numbers");
|
|
8
26
|
Object.defineProperty(exports, "truncateFixedNumberToBigInt", { enumerable: true, get: function () { return numbers_1.truncateFixedNumberToBigInt; } });
|
|
27
|
+
__exportStar(require("./calculate-required-permit"), exports);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@seal-protocol/backendjs",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.132",
|
|
4
4
|
"description": "Javascript SDK for Seal Backend",
|
|
5
5
|
"author": "amin <amin@refractedlabs.com>",
|
|
6
6
|
"homepage": "https://github.com/seal-protocol/backend/tree/main/ts-client#readme",
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* tslint:disable */
|
|
3
|
-
/* eslint-disable */
|
|
4
|
-
/**
|
|
5
|
-
* seal/seal.proto
|
|
6
|
-
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
-
*
|
|
8
|
-
* The version of the OpenAPI document: version not set
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
-
* https://openapi-generator.tech
|
|
13
|
-
* Do not edit the class manually.
|
|
14
|
-
*/
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.SealApprovalType = void 0;
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @export
|
|
20
|
-
* @enum {string}
|
|
21
|
-
*/
|
|
22
|
-
var SealApprovalType;
|
|
23
|
-
(function (SealApprovalType) {
|
|
24
|
-
SealApprovalType["ApprovalTypeUnspecified"] = "ApprovalType_UNSPECIFIED";
|
|
25
|
-
SealApprovalType["ApprovalTypeEip2612"] = "ApprovalType_EIP2612";
|
|
26
|
-
SealApprovalType["ApprovalTypePermit2"] = "ApprovalType_PERMIT2";
|
|
27
|
-
SealApprovalType["ApprovalTypeErc20"] = "ApprovalType_ERC20";
|
|
28
|
-
})(SealApprovalType || (exports.SealApprovalType = SealApprovalType = {}));
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* seal/seal.proto
|
|
3
|
-
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
-
*
|
|
5
|
-
* The version of the OpenAPI document: version not set
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
-
* https://openapi-generator.tech
|
|
10
|
-
* Do not edit the class manually.
|
|
11
|
-
*/
|
|
12
|
-
import type { SealApprovalType } from './seal-approval-type';
|
|
13
|
-
import type { SealDomainInfo } from './seal-domain-info';
|
|
14
|
-
/**
|
|
15
|
-
*
|
|
16
|
-
* @export
|
|
17
|
-
* @interface SealCalculateRequiredPermitResponse
|
|
18
|
-
*/
|
|
19
|
-
export interface SealCalculateRequiredPermitResponse {
|
|
20
|
-
/**
|
|
21
|
-
*
|
|
22
|
-
* @type {string}
|
|
23
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
24
|
-
*/
|
|
25
|
-
'ordersCount'?: string;
|
|
26
|
-
/**
|
|
27
|
-
*
|
|
28
|
-
* @type {string}
|
|
29
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
30
|
-
*/
|
|
31
|
-
'ordersRemaining'?: string;
|
|
32
|
-
/**
|
|
33
|
-
*
|
|
34
|
-
* @type {SealApprovalType}
|
|
35
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
36
|
-
*/
|
|
37
|
-
'approvalType'?: SealApprovalType;
|
|
38
|
-
/**
|
|
39
|
-
*
|
|
40
|
-
* @type {SealDomainInfo}
|
|
41
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
42
|
-
*/
|
|
43
|
-
'domainInfo'?: SealDomainInfo;
|
|
44
|
-
/**
|
|
45
|
-
*
|
|
46
|
-
* @type {string}
|
|
47
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
48
|
-
*/
|
|
49
|
-
'spender'?: string;
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* @type {string}
|
|
53
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
54
|
-
*/
|
|
55
|
-
'allowance'?: string;
|
|
56
|
-
/**
|
|
57
|
-
*
|
|
58
|
-
* @type {string}
|
|
59
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
60
|
-
*/
|
|
61
|
-
'nonce'?: string;
|
|
62
|
-
/**
|
|
63
|
-
*
|
|
64
|
-
* @type {number}
|
|
65
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
66
|
-
*/
|
|
67
|
-
'sigDeadline'?: number;
|
|
68
|
-
/**
|
|
69
|
-
*
|
|
70
|
-
* @type {number}
|
|
71
|
-
* @memberof SealCalculateRequiredPermitResponse
|
|
72
|
-
*/
|
|
73
|
-
'allowanceExpiration'?: number;
|
|
74
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/* tslint:disable */
|
|
3
|
-
/* eslint-disable */
|
|
4
|
-
/**
|
|
5
|
-
* seal/seal.proto
|
|
6
|
-
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
7
|
-
*
|
|
8
|
-
* The version of the OpenAPI document: version not set
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
12
|
-
* https://openapi-generator.tech
|
|
13
|
-
* Do not edit the class manually.
|
|
14
|
-
*/
|
|
15
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.SealOrdersOrderByProperty = void 0;
|
|
17
|
-
/**
|
|
18
|
-
*
|
|
19
|
-
* @export
|
|
20
|
-
* @enum {string}
|
|
21
|
-
*/
|
|
22
|
-
var SealOrdersOrderByProperty;
|
|
23
|
-
(function (SealOrdersOrderByProperty) {
|
|
24
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyUnspecified"] = "OrdersOrderByProperty_UNSPECIFIED";
|
|
25
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyId"] = "OrdersOrderByProperty_ID";
|
|
26
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyOwner"] = "OrdersOrderByProperty_OWNER";
|
|
27
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyTokenIn"] = "OrdersOrderByProperty_TOKEN_IN";
|
|
28
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyTokenOut"] = "OrdersOrderByProperty_TOKEN_OUT";
|
|
29
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyAmountIn"] = "OrdersOrderByProperty_AMOUNT_IN";
|
|
30
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyPrice"] = "OrdersOrderByProperty_PRICE";
|
|
31
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyDeadline"] = "OrdersOrderByProperty_DEADLINE";
|
|
32
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyReservationDepositToken"] = "OrdersOrderByProperty_RESERVATION_DEPOSIT_TOKEN";
|
|
33
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyMinReservationDepositAmount"] = "OrdersOrderByProperty_MIN_RESERVATION_DEPOSIT_AMOUNT";
|
|
34
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyRemainingAmount"] = "OrdersOrderByProperty_REMAINING_AMOUNT";
|
|
35
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyReservedAmount"] = "OrdersOrderByProperty_RESERVED_AMOUNT";
|
|
36
|
-
SealOrdersOrderByProperty["OrdersOrderByPropertyFilledAmount"] = "OrdersOrderByProperty_FILLED_AMOUNT";
|
|
37
|
-
})(SealOrdersOrderByProperty || (exports.SealOrdersOrderByProperty = SealOrdersOrderByProperty = {}));
|
|
File without changes
|
|
File without changes
|
|
File without changes
|