@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.
Files changed (31) hide show
  1. package/lib/codegen/api/seal-client.d.ts +221 -107
  2. package/lib/codegen/api/seal-client.js +217 -117
  3. package/lib/codegen/model/index.d.ts +8 -5
  4. package/lib/codegen/model/index.js +8 -5
  5. package/lib/codegen/model/{seal-domain-info.d.ts → seal-get-order-stats-for-owner-response.d.ts} +6 -18
  6. package/lib/codegen/model/seal-get-rfq-activities-response.d.ts +31 -0
  7. package/lib/codegen/model/seal-order.d.ts +30 -0
  8. package/lib/codegen/model/seal-rfq-activities-order-by-property.d.ts +22 -0
  9. package/lib/codegen/model/seal-rfq-activities-order-by-property.js +28 -0
  10. package/lib/codegen/model/seal-rfq-activities-order-by.d.ts +31 -0
  11. package/lib/codegen/model/seal-rfq-activity.d.ts +75 -0
  12. package/lib/codegen/model/{seal-approval-type.d.ts → seal-rfq-activity.js} +4 -11
  13. package/lib/codegen/model/{seal-orders-order-by-property.d.ts → types-orders-order-by-property.d.ts} +1 -1
  14. package/lib/codegen/model/types-orders-order-by-property.js +37 -0
  15. package/lib/codegen/model/{seal-orders-order-by.d.ts → types-orders-order-by.d.ts} +7 -7
  16. package/lib/codegen/model/types-orders-order-by.js +15 -0
  17. package/lib/codegen/model/types-rfq-activity-type.d.ts +25 -0
  18. package/lib/codegen/model/types-rfq-activity-type.js +31 -0
  19. package/lib/utils/calculate-liquidity.d.ts +21 -1
  20. package/lib/utils/calculate-liquidity.js +54 -11
  21. package/lib/utils/calculate-required-permit.d.ts +36 -0
  22. package/lib/utils/calculate-required-permit.js +111 -0
  23. package/lib/utils/index.d.ts +3 -1
  24. package/lib/utils/index.js +20 -1
  25. package/package.json +1 -1
  26. package/lib/codegen/model/seal-approval-type.js +0 -28
  27. package/lib/codegen/model/seal-calculate-required-permit-response.d.ts +0 -74
  28. package/lib/codegen/model/seal-orders-order-by-property.js +0 -37
  29. /package/lib/codegen/model/{seal-calculate-required-permit-response.js → seal-get-order-stats-for-owner-response.js} +0 -0
  30. /package/lib/codegen/model/{seal-domain-info.js → seal-get-rfq-activities-response.js} +0 -0
  31. /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
+ }
@@ -1,2 +1,4 @@
1
- export { LiquidityBreakdown, TransferPermission, calculateLiquidity } from "./calculate-liquidity";
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";
@@ -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
- Object.defineProperty(exports, "calculateLiquidity", { enumerable: true, get: function () { return calculate_liquidity_1.calculateLiquidity; } });
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.130",
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 = {}));