@metamask/transaction-pay-controller 22.4.0 → 22.5.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/CHANGELOG.md +13 -1
- package/dist/TransactionPayController-method-action-types.cjs.map +1 -1
- package/dist/TransactionPayController-method-action-types.d.cts +23 -1
- package/dist/TransactionPayController-method-action-types.d.cts.map +1 -1
- package/dist/TransactionPayController-method-action-types.d.mts +23 -1
- package/dist/TransactionPayController-method-action-types.d.mts.map +1 -1
- package/dist/TransactionPayController-method-action-types.mjs.map +1 -1
- package/dist/TransactionPayController.cjs +36 -4
- package/dist/TransactionPayController.cjs.map +1 -1
- package/dist/TransactionPayController.d.cts +18 -2
- package/dist/TransactionPayController.d.cts.map +1 -1
- package/dist/TransactionPayController.d.mts +18 -2
- package/dist/TransactionPayController.d.mts.map +1 -1
- package/dist/TransactionPayController.mjs +36 -4
- package/dist/TransactionPayController.mjs.map +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +2 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs.map +1 -1
- package/dist/strategy/across/across-quotes.cjs +1 -13
- package/dist/strategy/across/across-quotes.cjs.map +1 -1
- package/dist/strategy/across/across-quotes.d.cts.map +1 -1
- package/dist/strategy/across/across-quotes.d.mts.map +1 -1
- package/dist/strategy/across/across-quotes.mjs +1 -13
- package/dist/strategy/across/across-quotes.mjs.map +1 -1
- package/dist/strategy/across/across-submit.cjs +217 -18
- package/dist/strategy/across/across-submit.cjs.map +1 -1
- package/dist/strategy/across/across-submit.d.cts.map +1 -1
- package/dist/strategy/across/across-submit.d.mts.map +1 -1
- package/dist/strategy/across/across-submit.mjs +219 -20
- package/dist/strategy/across/across-submit.mjs.map +1 -1
- package/dist/strategy/across/transactions.cjs +21 -1
- package/dist/strategy/across/transactions.cjs.map +1 -1
- package/dist/strategy/across/transactions.d.cts +8 -0
- package/dist/strategy/across/transactions.d.cts.map +1 -1
- package/dist/strategy/across/transactions.d.mts +8 -0
- package/dist/strategy/across/transactions.d.mts.map +1 -1
- package/dist/strategy/across/transactions.mjs +19 -0
- package/dist/strategy/across/transactions.mjs.map +1 -1
- package/dist/strategy/relay/polymarket/calldata.cjs +28 -0
- package/dist/strategy/relay/polymarket/calldata.cjs.map +1 -0
- package/dist/strategy/relay/polymarket/calldata.d.cts +14 -0
- package/dist/strategy/relay/polymarket/calldata.d.cts.map +1 -0
- package/dist/strategy/relay/polymarket/calldata.d.mts +14 -0
- package/dist/strategy/relay/polymarket/calldata.d.mts.map +1 -0
- package/dist/strategy/relay/polymarket/calldata.mjs +21 -0
- package/dist/strategy/relay/polymarket/calldata.mjs.map +1 -0
- package/dist/strategy/relay/polymarket/constants.cjs +9 -0
- package/dist/strategy/relay/polymarket/constants.cjs.map +1 -0
- package/dist/strategy/relay/polymarket/constants.d.cts +6 -0
- package/dist/strategy/relay/polymarket/constants.d.cts.map +1 -0
- package/dist/strategy/relay/polymarket/constants.d.mts +6 -0
- package/dist/strategy/relay/polymarket/constants.d.mts.map +1 -0
- package/dist/strategy/relay/polymarket/constants.mjs +6 -0
- package/dist/strategy/relay/polymarket/constants.mjs.map +1 -0
- package/dist/strategy/relay/polymarket/withdraw.cjs +170 -0
- package/dist/strategy/relay/polymarket/withdraw.cjs.map +1 -0
- package/dist/strategy/relay/polymarket/withdraw.d.cts +13 -0
- package/dist/strategy/relay/polymarket/withdraw.d.cts.map +1 -0
- package/dist/strategy/relay/polymarket/withdraw.d.mts +13 -0
- package/dist/strategy/relay/polymarket/withdraw.d.mts.map +1 -0
- package/dist/strategy/relay/polymarket/withdraw.mjs +164 -0
- package/dist/strategy/relay/polymarket/withdraw.mjs.map +1 -0
- package/dist/strategy/relay/relay-quotes.cjs +8 -2
- package/dist/strategy/relay/relay-quotes.cjs.map +1 -1
- package/dist/strategy/relay/relay-quotes.d.cts.map +1 -1
- package/dist/strategy/relay/relay-quotes.d.mts.map +1 -1
- package/dist/strategy/relay/relay-quotes.mjs +8 -2
- package/dist/strategy/relay/relay-quotes.mjs.map +1 -1
- package/dist/strategy/relay/relay-submit.cjs +50 -18
- package/dist/strategy/relay/relay-submit.cjs.map +1 -1
- package/dist/strategy/relay/relay-submit.d.cts.map +1 -1
- package/dist/strategy/relay/relay-submit.d.mts.map +1 -1
- package/dist/strategy/relay/relay-submit.mjs +50 -18
- package/dist/strategy/relay/relay-submit.mjs.map +1 -1
- package/dist/strategy/relay/types.cjs.map +1 -1
- package/dist/strategy/relay/types.d.cts +2 -1
- package/dist/strategy/relay/types.d.cts.map +1 -1
- package/dist/strategy/relay/types.d.mts +2 -1
- package/dist/strategy/relay/types.d.mts.map +1 -1
- package/dist/strategy/relay/types.mjs.map +1 -1
- package/dist/tests/messenger-mock.cjs +6 -0
- package/dist/tests/messenger-mock.cjs.map +1 -1
- package/dist/tests/messenger-mock.d.cts +14 -0
- package/dist/tests/messenger-mock.d.cts.map +1 -1
- package/dist/tests/messenger-mock.d.mts +14 -0
- package/dist/tests/messenger-mock.d.mts.map +1 -1
- package/dist/tests/messenger-mock.mjs +6 -0
- package/dist/tests/messenger-mock.mjs.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +27 -0
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +27 -0
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/utils/feature-flags.cjs +1 -1
- package/dist/utils/feature-flags.cjs.map +1 -1
- package/dist/utils/feature-flags.d.cts +0 -1
- package/dist/utils/feature-flags.d.cts.map +1 -1
- package/dist/utils/feature-flags.d.mts +0 -1
- package/dist/utils/feature-flags.d.mts.map +1 -1
- package/dist/utils/feature-flags.mjs +1 -1
- package/dist/utils/feature-flags.mjs.map +1 -1
- package/dist/utils/quotes.cjs +8 -3
- package/dist/utils/quotes.cjs.map +1 -1
- package/dist/utils/quotes.d.cts.map +1 -1
- package/dist/utils/quotes.d.mts.map +1 -1
- package/dist/utils/quotes.mjs +8 -3
- package/dist/utils/quotes.mjs.map +1 -1
- package/dist/utils/source-amounts.cjs +10 -8
- package/dist/utils/source-amounts.cjs.map +1 -1
- package/dist/utils/source-amounts.d.cts.map +1 -1
- package/dist/utils/source-amounts.d.mts.map +1 -1
- package/dist/utils/source-amounts.mjs +10 -8
- package/dist/utils/source-amounts.mjs.map +1 -1
- package/dist/utils/token.cjs +5 -2
- package/dist/utils/token.cjs.map +1 -1
- package/dist/utils/token.d.cts.map +1 -1
- package/dist/utils/token.d.mts.map +1 -1
- package/dist/utils/token.mjs +5 -2
- package/dist/utils/token.mjs.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TransactionType } from "@metamask/transaction-controller";
|
|
2
|
+
import type { TransactionMeta } from "@metamask/transaction-controller";
|
|
2
3
|
import type { AcrossSwapApprovalResponse } from "./types.cjs";
|
|
3
4
|
export type AcrossOrderedTransaction = {
|
|
4
5
|
chainId: number;
|
|
@@ -15,4 +16,11 @@ export declare function getAcrossOrderedTransactions({ quote, swapType, }: {
|
|
|
15
16
|
quote: AcrossSwapApprovalResponse;
|
|
16
17
|
swapType?: TransactionType;
|
|
17
18
|
}): AcrossOrderedTransaction[];
|
|
19
|
+
/**
|
|
20
|
+
* Get a usable gas limit from the original or nested transaction.
|
|
21
|
+
*
|
|
22
|
+
* @param transaction - Original transaction metadata.
|
|
23
|
+
* @returns Positive integer gas limit if present, otherwise undefined.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getOriginalTransactionGas(transaction: TransactionMeta): number | undefined;
|
|
18
26
|
//# sourceMappingURL=transactions.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.d.cts","sourceRoot":"","sources":["../../../src/strategy/across/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;
|
|
1
|
+
{"version":3,"file":"transactions.d.cts","sourceRoot":"","sources":["../../../src/strategy/across/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAGxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAE1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,EAC3C,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,0BAA0B,CAAC;IAClC,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,GAAG,wBAAwB,EAAE,CAiB7B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,eAAe,GAC3B,MAAM,GAAG,SAAS,CAepB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TransactionType } from "@metamask/transaction-controller";
|
|
2
|
+
import type { TransactionMeta } from "@metamask/transaction-controller";
|
|
2
3
|
import type { AcrossSwapApprovalResponse } from "./types.mjs";
|
|
3
4
|
export type AcrossOrderedTransaction = {
|
|
4
5
|
chainId: number;
|
|
@@ -15,4 +16,11 @@ export declare function getAcrossOrderedTransactions({ quote, swapType, }: {
|
|
|
15
16
|
quote: AcrossSwapApprovalResponse;
|
|
16
17
|
swapType?: TransactionType;
|
|
17
18
|
}): AcrossOrderedTransaction[];
|
|
19
|
+
/**
|
|
20
|
+
* Get a usable gas limit from the original or nested transaction.
|
|
21
|
+
*
|
|
22
|
+
* @param transaction - Original transaction metadata.
|
|
23
|
+
* @returns Positive integer gas limit if present, otherwise undefined.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getOriginalTransactionGas(transaction: TransactionMeta): number | undefined;
|
|
18
26
|
//# sourceMappingURL=transactions.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.d.mts","sourceRoot":"","sources":["../../../src/strategy/across/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;
|
|
1
|
+
{"version":3,"file":"transactions.d.mts","sourceRoot":"","sources":["../../../src/strategy/across/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,yCAAyC;AAGxE,OAAO,KAAK,EAAE,0BAA0B,EAAE,oBAAgB;AAE1D,MAAM,MAAM,wBAAwB,GAAG;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,EAAE,EAAE,KAAK,MAAM,EAAE,CAAC;IAClB,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CACvB,CAAC;AAEF,wBAAgB,4BAA4B,CAAC,EAC3C,KAAK,EACL,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,0BAA0B,CAAC;IAClC,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B,GAAG,wBAAwB,EAAE,CAiB7B;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,eAAe,GAC3B,MAAM,GAAG,SAAS,CAepB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { TransactionType } from "@metamask/transaction-controller";
|
|
2
|
+
import { BigNumber } from "bignumber.js";
|
|
2
3
|
export function getAcrossOrderedTransactions({ quote, swapType, }) {
|
|
3
4
|
const swapChainId = quote.swapTx.chainId;
|
|
4
5
|
const approvalTransactions = (quote.approvalTxns ?? []).map((approval) => ({
|
|
@@ -16,4 +17,22 @@ export function getAcrossOrderedTransactions({ quote, swapType, }) {
|
|
|
16
17
|
},
|
|
17
18
|
];
|
|
18
19
|
}
|
|
20
|
+
/**
|
|
21
|
+
* Get a usable gas limit from the original or nested transaction.
|
|
22
|
+
*
|
|
23
|
+
* @param transaction - Original transaction metadata.
|
|
24
|
+
* @returns Positive integer gas limit if present, otherwise undefined.
|
|
25
|
+
*/
|
|
26
|
+
export function getOriginalTransactionGas(transaction) {
|
|
27
|
+
const nestedGas = transaction.nestedTransactions?.find((tx) => tx.gas)?.gas;
|
|
28
|
+
const rawGas = nestedGas ?? transaction.txParams.gas;
|
|
29
|
+
if (rawGas === undefined) {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
const gas = new BigNumber(rawGas);
|
|
33
|
+
if (!gas.isFinite() || gas.isNaN() || !gas.isInteger() || gas.lte(0)) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
return gas.toNumber();
|
|
37
|
+
}
|
|
19
38
|
//# sourceMappingURL=transactions.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transactions.mjs","sourceRoot":"","sources":["../../../src/strategy/across/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;
|
|
1
|
+
{"version":3,"file":"transactions.mjs","sourceRoot":"","sources":["../../../src/strategy/across/transactions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,yCAAyC;AAEnE,OAAO,EAAE,SAAS,EAAE,qBAAqB;AAgBzC,MAAM,UAAU,4BAA4B,CAAC,EAC3C,KAAK,EACL,QAAQ,GAIT;IACC,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IACzC,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACzE,GAAG,QAAQ;QACX,OAAO,EAAE,QAAQ,CAAC,OAAO,IAAI,WAAW;QACxC,IAAI,EAAE,UAAmB;QACzB,IAAI,EAAE,eAAe,CAAC,kBAAkB;KACzC,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL,GAAG,oBAAoB;QACvB;YACE,GAAG,KAAK,CAAC,MAAM;YACf,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,QAAQ;SACf;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CACvC,WAA4B;IAE5B,MAAM,SAAS,GAAG,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,IAAI,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC;IAErD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;IAElC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import { TransactionType } from '@metamask/transaction-controller';\nimport type { TransactionMeta } from '@metamask/transaction-controller';\nimport { BigNumber } from 'bignumber.js';\n\nimport type { AcrossSwapApprovalResponse } from './types';\n\nexport type AcrossOrderedTransaction = {\n chainId: number;\n data: `0x${string}`;\n gas?: string;\n kind: 'approval' | 'swap';\n maxFeePerGas?: string;\n maxPriorityFeePerGas?: string;\n to: `0x${string}`;\n type?: TransactionType;\n value?: `0x${string}`;\n};\n\nexport function getAcrossOrderedTransactions({\n quote,\n swapType,\n}: {\n quote: AcrossSwapApprovalResponse;\n swapType?: TransactionType;\n}): AcrossOrderedTransaction[] {\n const swapChainId = quote.swapTx.chainId;\n const approvalTransactions = (quote.approvalTxns ?? []).map((approval) => ({\n ...approval,\n chainId: approval.chainId ?? swapChainId,\n kind: 'approval' as const,\n type: TransactionType.tokenMethodApprove,\n }));\n\n return [\n ...approvalTransactions,\n {\n ...quote.swapTx,\n kind: 'swap',\n type: swapType,\n },\n ];\n}\n\n/**\n * Get a usable gas limit from the original or nested transaction.\n *\n * @param transaction - Original transaction metadata.\n * @returns Positive integer gas limit if present, otherwise undefined.\n */\nexport function getOriginalTransactionGas(\n transaction: TransactionMeta,\n): number | undefined {\n const nestedGas = transaction.nestedTransactions?.find((tx) => tx.gas)?.gas;\n const rawGas = nestedGas ?? transaction.txParams.gas;\n\n if (rawGas === undefined) {\n return undefined;\n }\n\n const gas = new BigNumber(rawGas);\n\n if (!gas.isFinite() || gas.isNaN() || !gas.isInteger() || gas.lte(0)) {\n return undefined;\n }\n\n return gas.toNumber();\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.extractErc20TransferRecipient = exports.encodeWrap = exports.encodeUnwrap = exports.encodeApprove = void 0;
|
|
4
|
+
const abi_1 = require("@ethersproject/abi");
|
|
5
|
+
const iface = new abi_1.Interface([
|
|
6
|
+
'function approve(address spender, uint256 amount)',
|
|
7
|
+
'function unwrap(address asset, address recipient, uint256 amount)',
|
|
8
|
+
'function wrap(address asset, address recipient, uint256 amount)',
|
|
9
|
+
'function transfer(address recipient, uint256 amount)',
|
|
10
|
+
]);
|
|
11
|
+
function encodeApprove(spender, amount) {
|
|
12
|
+
return iface.encodeFunctionData('approve', [spender, amount]);
|
|
13
|
+
}
|
|
14
|
+
exports.encodeApprove = encodeApprove;
|
|
15
|
+
function encodeUnwrap({ asset, recipient, amount, }) {
|
|
16
|
+
return iface.encodeFunctionData('unwrap', [asset, recipient, amount]);
|
|
17
|
+
}
|
|
18
|
+
exports.encodeUnwrap = encodeUnwrap;
|
|
19
|
+
function encodeWrap({ asset, recipient, amount, }) {
|
|
20
|
+
return iface.encodeFunctionData('wrap', [asset, recipient, amount]);
|
|
21
|
+
}
|
|
22
|
+
exports.encodeWrap = encodeWrap;
|
|
23
|
+
function extractErc20TransferRecipient(data) {
|
|
24
|
+
const [recipient] = iface.decodeFunctionData('transfer', data);
|
|
25
|
+
return recipient;
|
|
26
|
+
}
|
|
27
|
+
exports.extractErc20TransferRecipient = extractErc20TransferRecipient;
|
|
28
|
+
//# sourceMappingURL=calldata.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata.cjs","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/calldata.ts"],"names":[],"mappings":";;;AAAA,4CAA+C;AAG/C,MAAM,KAAK,GAAG,IAAI,eAAS,CAAC;IAC1B,mDAAmD;IACnD,mEAAmE;IACnE,iEAAiE;IACjE,sDAAsD;CACvD,CAAC,CAAC;AAEH,SAAgB,aAAa,CAAC,OAAY,EAAE,MAAc;IACxD,OAAO,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAQ,CAAC;AACvE,CAAC;AAFD,sCAEC;AAED,SAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,MAAM,GAKP;IACC,OAAO,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAQ,CAAC;AAC/E,CAAC;AAVD,oCAUC;AAED,SAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,GAKP;IACC,OAAO,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAQ,CAAC;AAC7E,CAAC;AAVD,gCAUC;AAED,SAAgB,6BAA6B,CAAC,IAAS;IACrD,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC/D,OAAO,SAAgB,CAAC;AAC1B,CAAC;AAHD,sEAGC","sourcesContent":["import { Interface } from '@ethersproject/abi';\nimport type { Hex } from '@metamask/utils';\n\nconst iface = new Interface([\n 'function approve(address spender, uint256 amount)',\n 'function unwrap(address asset, address recipient, uint256 amount)',\n 'function wrap(address asset, address recipient, uint256 amount)',\n 'function transfer(address recipient, uint256 amount)',\n]);\n\nexport function encodeApprove(spender: Hex, amount: bigint): Hex {\n return iface.encodeFunctionData('approve', [spender, amount]) as Hex;\n}\n\nexport function encodeUnwrap({\n asset,\n recipient,\n amount,\n}: {\n asset: Hex;\n recipient: Hex;\n amount: bigint;\n}): Hex {\n return iface.encodeFunctionData('unwrap', [asset, recipient, amount]) as Hex;\n}\n\nexport function encodeWrap({\n asset,\n recipient,\n amount,\n}: {\n asset: Hex;\n recipient: Hex;\n amount: bigint;\n}): Hex {\n return iface.encodeFunctionData('wrap', [asset, recipient, amount]) as Hex;\n}\n\nexport function extractErc20TransferRecipient(data: Hex): Hex {\n const [recipient] = iface.decodeFunctionData('transfer', data);\n return recipient as Hex;\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Hex } from "@metamask/utils";
|
|
2
|
+
export declare function encodeApprove(spender: Hex, amount: bigint): Hex;
|
|
3
|
+
export declare function encodeUnwrap({ asset, recipient, amount, }: {
|
|
4
|
+
asset: Hex;
|
|
5
|
+
recipient: Hex;
|
|
6
|
+
amount: bigint;
|
|
7
|
+
}): Hex;
|
|
8
|
+
export declare function encodeWrap({ asset, recipient, amount, }: {
|
|
9
|
+
asset: Hex;
|
|
10
|
+
recipient: Hex;
|
|
11
|
+
amount: bigint;
|
|
12
|
+
}): Hex;
|
|
13
|
+
export declare function extractErc20TransferRecipient(data: Hex): Hex;
|
|
14
|
+
//# sourceMappingURL=calldata.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata.d.cts","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/calldata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAE/D;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE;IACD,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,GAAG,CAEN;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE;IACD,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,GAAG,CAEN;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAG5D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { Hex } from "@metamask/utils";
|
|
2
|
+
export declare function encodeApprove(spender: Hex, amount: bigint): Hex;
|
|
3
|
+
export declare function encodeUnwrap({ asset, recipient, amount, }: {
|
|
4
|
+
asset: Hex;
|
|
5
|
+
recipient: Hex;
|
|
6
|
+
amount: bigint;
|
|
7
|
+
}): Hex;
|
|
8
|
+
export declare function encodeWrap({ asset, recipient, amount, }: {
|
|
9
|
+
asset: Hex;
|
|
10
|
+
recipient: Hex;
|
|
11
|
+
amount: bigint;
|
|
12
|
+
}): Hex;
|
|
13
|
+
export declare function extractErc20TransferRecipient(data: Hex): Hex;
|
|
14
|
+
//# sourceMappingURL=calldata.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata.d.mts","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/calldata.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,CAE/D;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE;IACD,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,GAAG,CAEN;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,GACP,EAAE;IACD,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,GAAG,CAEN;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,GAAG,GAAG,GAAG,CAG5D"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { Interface } from "@ethersproject/abi";
|
|
2
|
+
const iface = new Interface([
|
|
3
|
+
'function approve(address spender, uint256 amount)',
|
|
4
|
+
'function unwrap(address asset, address recipient, uint256 amount)',
|
|
5
|
+
'function wrap(address asset, address recipient, uint256 amount)',
|
|
6
|
+
'function transfer(address recipient, uint256 amount)',
|
|
7
|
+
]);
|
|
8
|
+
export function encodeApprove(spender, amount) {
|
|
9
|
+
return iface.encodeFunctionData('approve', [spender, amount]);
|
|
10
|
+
}
|
|
11
|
+
export function encodeUnwrap({ asset, recipient, amount, }) {
|
|
12
|
+
return iface.encodeFunctionData('unwrap', [asset, recipient, amount]);
|
|
13
|
+
}
|
|
14
|
+
export function encodeWrap({ asset, recipient, amount, }) {
|
|
15
|
+
return iface.encodeFunctionData('wrap', [asset, recipient, amount]);
|
|
16
|
+
}
|
|
17
|
+
export function extractErc20TransferRecipient(data) {
|
|
18
|
+
const [recipient] = iface.decodeFunctionData('transfer', data);
|
|
19
|
+
return recipient;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=calldata.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calldata.mjs","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/calldata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,2BAA2B;AAG/C,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC;IAC1B,mDAAmD;IACnD,mEAAmE;IACnE,iEAAiE;IACjE,sDAAsD;CACvD,CAAC,CAAC;AAEH,MAAM,UAAU,aAAa,CAAC,OAAY,EAAE,MAAc;IACxD,OAAO,KAAK,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAQ,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,KAAK,EACL,SAAS,EACT,MAAM,GAKP;IACC,OAAO,KAAK,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAQ,CAAC;AAC/E,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EACzB,KAAK,EACL,SAAS,EACT,MAAM,GAKP;IACC,OAAO,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAQ,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,IAAS;IACrD,MAAM,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC/D,OAAO,SAAgB,CAAC;AAC1B,CAAC","sourcesContent":["import { Interface } from '@ethersproject/abi';\nimport type { Hex } from '@metamask/utils';\n\nconst iface = new Interface([\n 'function approve(address spender, uint256 amount)',\n 'function unwrap(address asset, address recipient, uint256 amount)',\n 'function wrap(address asset, address recipient, uint256 amount)',\n 'function transfer(address recipient, uint256 amount)',\n]);\n\nexport function encodeApprove(spender: Hex, amount: bigint): Hex {\n return iface.encodeFunctionData('approve', [spender, amount]) as Hex;\n}\n\nexport function encodeUnwrap({\n asset,\n recipient,\n amount,\n}: {\n asset: Hex;\n recipient: Hex;\n amount: bigint;\n}): Hex {\n return iface.encodeFunctionData('unwrap', [asset, recipient, amount]) as Hex;\n}\n\nexport function encodeWrap({\n asset,\n recipient,\n amount,\n}: {\n asset: Hex;\n recipient: Hex;\n amount: bigint;\n}): Hex {\n return iface.encodeFunctionData('wrap', [asset, recipient, amount]) as Hex;\n}\n\nexport function extractErc20TransferRecipient(data: Hex): Hex {\n const [recipient] = iface.decodeFunctionData('transfer', data);\n return recipient as Hex;\n}\n"]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SWEEP_RELAYER_SETTLE_DELAY_MS = exports.SWEEP_BALANCE_RETRY_DELAY_MS = exports.SWEEP_BALANCE_RETRY_ATTEMPTS = exports.POLYMARKET_COLLATERAL_ONRAMP_POLYGON = exports.POLYMARKET_COLLATERAL_OFFRAMP_POLYGON = void 0;
|
|
4
|
+
exports.POLYMARKET_COLLATERAL_OFFRAMP_POLYGON = '0x2957922Eb93258b93368531d39fAcCA3B4dC5854';
|
|
5
|
+
exports.POLYMARKET_COLLATERAL_ONRAMP_POLYGON = '0x93070a847efEf7F70739046A929D47a521F5B8ee';
|
|
6
|
+
exports.SWEEP_BALANCE_RETRY_ATTEMPTS = 5;
|
|
7
|
+
exports.SWEEP_BALANCE_RETRY_DELAY_MS = 1000;
|
|
8
|
+
exports.SWEEP_RELAYER_SETTLE_DELAY_MS = 3000;
|
|
9
|
+
//# sourceMappingURL=constants.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,qCAAqC,GAChD,4CAAmD,CAAC;AAEzC,QAAA,oCAAoC,GAC/C,4CAAmD,CAAC;AAEzC,QAAA,4BAA4B,GAAG,CAAC,CAAC;AAEjC,QAAA,4BAA4B,GAAG,IAAI,CAAC;AAEpC,QAAA,6BAA6B,GAAG,IAAI,CAAC","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nexport const POLYMARKET_COLLATERAL_OFFRAMP_POLYGON =\n '0x2957922Eb93258b93368531d39fAcCA3B4dC5854' as Hex;\n\nexport const POLYMARKET_COLLATERAL_ONRAMP_POLYGON =\n '0x93070a847efEf7F70739046A929D47a521F5B8ee' as Hex;\n\nexport const SWEEP_BALANCE_RETRY_ATTEMPTS = 5;\n\nexport const SWEEP_BALANCE_RETRY_DELAY_MS = 1000;\n\nexport const SWEEP_RELAYER_SETTLE_DELAY_MS = 3000;\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const POLYMARKET_COLLATERAL_OFFRAMP_POLYGON: `0x${string}`;
|
|
2
|
+
export declare const POLYMARKET_COLLATERAL_ONRAMP_POLYGON: `0x${string}`;
|
|
3
|
+
export declare const SWEEP_BALANCE_RETRY_ATTEMPTS = 5;
|
|
4
|
+
export declare const SWEEP_BALANCE_RETRY_DELAY_MS = 1000;
|
|
5
|
+
export declare const SWEEP_RELAYER_SETTLE_DELAY_MS = 3000;
|
|
6
|
+
//# sourceMappingURL=constants.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qCAAqC,eACG,CAAC;AAEtD,eAAO,MAAM,oCAAoC,eACI,CAAC;AAEtD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,eAAO,MAAM,6BAA6B,OAAO,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const POLYMARKET_COLLATERAL_OFFRAMP_POLYGON: `0x${string}`;
|
|
2
|
+
export declare const POLYMARKET_COLLATERAL_ONRAMP_POLYGON: `0x${string}`;
|
|
3
|
+
export declare const SWEEP_BALANCE_RETRY_ATTEMPTS = 5;
|
|
4
|
+
export declare const SWEEP_BALANCE_RETRY_DELAY_MS = 1000;
|
|
5
|
+
export declare const SWEEP_RELAYER_SETTLE_DELAY_MS = 3000;
|
|
6
|
+
//# sourceMappingURL=constants.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qCAAqC,eACG,CAAC;AAEtD,eAAO,MAAM,oCAAoC,eACI,CAAC;AAEtD,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAE9C,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD,eAAO,MAAM,6BAA6B,OAAO,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const POLYMARKET_COLLATERAL_OFFRAMP_POLYGON = '0x2957922Eb93258b93368531d39fAcCA3B4dC5854';
|
|
2
|
+
export const POLYMARKET_COLLATERAL_ONRAMP_POLYGON = '0x93070a847efEf7F70739046A929D47a521F5B8ee';
|
|
3
|
+
export const SWEEP_BALANCE_RETRY_ATTEMPTS = 5;
|
|
4
|
+
export const SWEEP_BALANCE_RETRY_DELAY_MS = 1000;
|
|
5
|
+
export const SWEEP_RELAYER_SETTLE_DELAY_MS = 3000;
|
|
6
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/constants.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,qCAAqC,GAChD,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,oCAAoC,GAC/C,4CAAmD,CAAC;AAEtD,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAE9C,MAAM,CAAC,MAAM,4BAA4B,GAAG,IAAI,CAAC;AAEjD,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,CAAC","sourcesContent":["import type { Hex } from '@metamask/utils';\n\nexport const POLYMARKET_COLLATERAL_OFFRAMP_POLYGON =\n '0x2957922Eb93258b93368531d39fAcCA3B4dC5854' as Hex;\n\nexport const POLYMARKET_COLLATERAL_ONRAMP_POLYGON =\n '0x93070a847efEf7F70739046A929D47a521F5B8ee' as Hex;\n\nexport const SWEEP_BALANCE_RETRY_ATTEMPTS = 5;\n\nexport const SWEEP_BALANCE_RETRY_DELAY_MS = 1000;\n\nexport const SWEEP_RELAYER_SETTLE_DELAY_MS = 3000;\n"]}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.sweepPolymarketDepositWallet = exports.submitPolymarketWithdraw = exports.applyPolymarketDepositWalletOverrides = void 0;
|
|
4
|
+
const utils_1 = require("@metamask/utils");
|
|
5
|
+
const constants_1 = require("../../../constants.cjs");
|
|
6
|
+
const logger_1 = require("../../../logger.cjs");
|
|
7
|
+
const token_1 = require("../../../utils/token.cjs");
|
|
8
|
+
const calldata_1 = require("./calldata.cjs");
|
|
9
|
+
const constants_2 = require("./constants.cjs");
|
|
10
|
+
const log = (0, utils_1.createModuleLogger)(logger_1.projectLogger, 'polymarket-withdraw');
|
|
11
|
+
async function applyPolymarketDepositWalletOverrides(body, request, messenger) {
|
|
12
|
+
const depositWalletAddress = await getDepositWalletAddress(messenger, request.from);
|
|
13
|
+
body.originCurrency = constants_1.POLYGON_USDCE_ADDRESS;
|
|
14
|
+
body.user = depositWalletAddress;
|
|
15
|
+
body.refundTo = depositWalletAddress;
|
|
16
|
+
body.useDepositAddress = true;
|
|
17
|
+
body.strict = true;
|
|
18
|
+
}
|
|
19
|
+
exports.applyPolymarketDepositWalletOverrides = applyPolymarketDepositWalletOverrides;
|
|
20
|
+
async function submitPolymarketWithdraw(quote, from, messenger) {
|
|
21
|
+
const depositWalletAddress = await getDepositWalletAddress(messenger, from);
|
|
22
|
+
const relayDepositAddress = extractRelayDepositAddress(quote.original);
|
|
23
|
+
const amount = BigInt(quote.sourceAmount.raw);
|
|
24
|
+
const preSubmitUsdceBalance = await readUsdceBalanceOrZero(messenger, depositWalletAddress);
|
|
25
|
+
log('Submitting unwrap batch to Relay deposit address', {
|
|
26
|
+
depositWalletAddress,
|
|
27
|
+
relayDepositAddress,
|
|
28
|
+
amount: amount.toString(),
|
|
29
|
+
preSubmitUsdceBalance: preSubmitUsdceBalance.toString(),
|
|
30
|
+
});
|
|
31
|
+
const result = await submitDepositWalletBatch(messenger, {
|
|
32
|
+
eoa: from,
|
|
33
|
+
depositWallet: depositWalletAddress,
|
|
34
|
+
calls: [
|
|
35
|
+
{
|
|
36
|
+
target: constants_1.POLYGON_PUSD_ADDRESS,
|
|
37
|
+
value: '0',
|
|
38
|
+
data: (0, calldata_1.encodeApprove)(constants_2.POLYMARKET_COLLATERAL_OFFRAMP_POLYGON, amount),
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
target: constants_2.POLYMARKET_COLLATERAL_OFFRAMP_POLYGON,
|
|
42
|
+
value: '0',
|
|
43
|
+
data: (0, calldata_1.encodeUnwrap)({
|
|
44
|
+
asset: constants_1.POLYGON_USDCE_ADDRESS,
|
|
45
|
+
recipient: relayDepositAddress,
|
|
46
|
+
amount,
|
|
47
|
+
}),
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
return { ...result, preSubmitUsdceBalance };
|
|
52
|
+
}
|
|
53
|
+
exports.submitPolymarketWithdraw = submitPolymarketWithdraw;
|
|
54
|
+
async function sweepPolymarketDepositWallet(from, messenger, options) {
|
|
55
|
+
const isRefund = options.relayStatus === 'refund' || options.relayStatus === 'refunded';
|
|
56
|
+
const waitForBalanceAbove = isRefund
|
|
57
|
+
? options.preSubmitUsdceBalance
|
|
58
|
+
: undefined;
|
|
59
|
+
const depositWalletAddress = await getDepositWalletAddress(messenger, from);
|
|
60
|
+
const usdceBalance = await readDepositWalletUsdceBalance(messenger, depositWalletAddress, waitForBalanceAbove);
|
|
61
|
+
if (usdceBalance === undefined) {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (usdceBalance === 0n) {
|
|
65
|
+
log('USDC.e sweep: nothing to wrap');
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
if (waitForBalanceAbove !== undefined && usdceBalance > waitForBalanceAbove) {
|
|
69
|
+
log('USDC.e sweep: waiting for relayer RPC to catch up to new balance');
|
|
70
|
+
await new Promise((resolve) => setTimeout(resolve, constants_2.SWEEP_RELAYER_SETTLE_DELAY_MS));
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
await submitDepositWalletBatch(messenger, {
|
|
74
|
+
eoa: from,
|
|
75
|
+
depositWallet: depositWalletAddress,
|
|
76
|
+
calls: [
|
|
77
|
+
{
|
|
78
|
+
target: constants_1.POLYGON_USDCE_ADDRESS,
|
|
79
|
+
value: '0',
|
|
80
|
+
data: (0, calldata_1.encodeApprove)(constants_2.POLYMARKET_COLLATERAL_ONRAMP_POLYGON, usdceBalance),
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
target: constants_2.POLYMARKET_COLLATERAL_ONRAMP_POLYGON,
|
|
84
|
+
value: '0',
|
|
85
|
+
data: (0, calldata_1.encodeWrap)({
|
|
86
|
+
asset: constants_1.POLYGON_USDCE_ADDRESS,
|
|
87
|
+
recipient: depositWalletAddress,
|
|
88
|
+
amount: usdceBalance,
|
|
89
|
+
}),
|
|
90
|
+
},
|
|
91
|
+
],
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
log('USDC.e sweep: batch submission failed', { error });
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
exports.sweepPolymarketDepositWallet = sweepPolymarketDepositWallet;
|
|
99
|
+
async function readUsdceBalanceOrZero(messenger, depositWalletAddress) {
|
|
100
|
+
try {
|
|
101
|
+
const raw = await (0, token_1.getLiveTokenBalance)(messenger, depositWalletAddress, constants_1.CHAIN_ID_POLYGON, constants_1.POLYGON_USDCE_ADDRESS);
|
|
102
|
+
return BigInt(raw);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
log('USDC.e balance read failed, defaulting to zero', { error });
|
|
106
|
+
return 0n;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
async function readDepositWalletUsdceBalance(messenger, depositWalletAddress, waitForBalanceAbove) {
|
|
110
|
+
const shouldRetry = waitForBalanceAbove !== undefined;
|
|
111
|
+
const maxAttempts = shouldRetry ? constants_2.SWEEP_BALANCE_RETRY_ATTEMPTS : 1;
|
|
112
|
+
let lastBalance = 0n;
|
|
113
|
+
for (let attempt = 1; attempt <= maxAttempts; attempt++) {
|
|
114
|
+
if (attempt > 1) {
|
|
115
|
+
await new Promise((resolve) => setTimeout(resolve, constants_2.SWEEP_BALANCE_RETRY_DELAY_MS));
|
|
116
|
+
}
|
|
117
|
+
try {
|
|
118
|
+
const raw = await (0, token_1.getLiveTokenBalance)(messenger, depositWalletAddress, constants_1.CHAIN_ID_POLYGON, constants_1.POLYGON_USDCE_ADDRESS);
|
|
119
|
+
lastBalance = BigInt(raw);
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
log('USDC.e sweep: failed to read deposit wallet balance', { error });
|
|
123
|
+
return undefined;
|
|
124
|
+
}
|
|
125
|
+
log('USDC.e sweep: deposit wallet balance', {
|
|
126
|
+
depositWalletAddress,
|
|
127
|
+
balance: lastBalance.toString(),
|
|
128
|
+
attempt,
|
|
129
|
+
waitForBalanceAbove: waitForBalanceAbove?.toString(),
|
|
130
|
+
});
|
|
131
|
+
const hasIncreased = waitForBalanceAbove === undefined || lastBalance > waitForBalanceAbove;
|
|
132
|
+
if (hasIncreased) {
|
|
133
|
+
return lastBalance;
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return lastBalance;
|
|
137
|
+
}
|
|
138
|
+
async function getDepositWalletAddress(messenger, eoa) {
|
|
139
|
+
const depositWalletAddress = await messenger.call('TransactionPayController:polymarketGetDepositWalletAddress', { eoa });
|
|
140
|
+
log('Polymarket callback: getDepositWalletAddress', {
|
|
141
|
+
eoa,
|
|
142
|
+
depositWalletAddress,
|
|
143
|
+
});
|
|
144
|
+
return depositWalletAddress;
|
|
145
|
+
}
|
|
146
|
+
async function submitDepositWalletBatch(messenger, params) {
|
|
147
|
+
log('Polymarket callback: submitDepositWalletBatch', {
|
|
148
|
+
eoa: params.eoa,
|
|
149
|
+
depositWallet: params.depositWallet,
|
|
150
|
+
callCount: params.calls.length,
|
|
151
|
+
});
|
|
152
|
+
const result = await messenger.call('TransactionPayController:polymarketSubmitDepositWalletBatch', params);
|
|
153
|
+
log('Polymarket callback: submitDepositWalletBatch returned', {
|
|
154
|
+
sourceHash: result.sourceHash,
|
|
155
|
+
});
|
|
156
|
+
return result;
|
|
157
|
+
}
|
|
158
|
+
function extractRelayDepositAddress(relayQuote) {
|
|
159
|
+
const depositStep = relayQuote.steps.find((step) => step.id === 'deposit');
|
|
160
|
+
if (depositStep?.kind !== 'transaction') {
|
|
161
|
+
throw new Error('Polymarket deposit wallet withdraw: Relay quote has no deposit step');
|
|
162
|
+
}
|
|
163
|
+
const transactionStep = depositStep;
|
|
164
|
+
const depositCallData = transactionStep.items[0]?.data?.data;
|
|
165
|
+
if (!depositCallData) {
|
|
166
|
+
throw new Error('Polymarket deposit wallet withdraw: Relay quote deposit step is missing calldata');
|
|
167
|
+
}
|
|
168
|
+
return (0, calldata_1.extractErc20TransferRecipient)(depositCallData);
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=withdraw.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.cjs","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/withdraw.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Hex } from '@metamask/utils';\nimport { createModuleLogger } from '@metamask/utils';\n\nimport {\n CHAIN_ID_POLYGON,\n POLYGON_PUSD_ADDRESS,\n POLYGON_USDCE_ADDRESS,\n} from '../../../constants';\nimport { projectLogger } from '../../../logger';\nimport type {\n QuoteRequest,\n TransactionPayControllerMessenger,\n TransactionPayQuote,\n} from '../../../types';\nimport { getLiveTokenBalance } from '../../../utils/token';\nimport type {\n RelayQuote,\n RelayQuoteRequest,\n RelayStatus,\n RelayTransactionStep,\n} from '../types';\nimport {\n encodeApprove,\n encodeUnwrap,\n encodeWrap,\n extractErc20TransferRecipient,\n} from './calldata';\nimport {\n POLYMARKET_COLLATERAL_OFFRAMP_POLYGON,\n POLYMARKET_COLLATERAL_ONRAMP_POLYGON,\n SWEEP_BALANCE_RETRY_ATTEMPTS,\n SWEEP_BALANCE_RETRY_DELAY_MS,\n SWEEP_RELAYER_SETTLE_DELAY_MS,\n} from './constants';\n\nconst log = createModuleLogger(projectLogger, 'polymarket-withdraw');\n\nexport async function applyPolymarketDepositWalletOverrides(\n body: RelayQuoteRequest,\n request: QuoteRequest,\n messenger: TransactionPayControllerMessenger,\n): Promise<void> {\n const depositWalletAddress = await getDepositWalletAddress(\n messenger,\n request.from,\n );\n\n body.originCurrency = POLYGON_USDCE_ADDRESS;\n body.user = depositWalletAddress;\n body.refundTo = depositWalletAddress;\n body.useDepositAddress = true;\n body.strict = true;\n}\n\nexport async function submitPolymarketWithdraw(\n quote: TransactionPayQuote<RelayQuote>,\n from: Hex,\n messenger: TransactionPayControllerMessenger,\n): Promise<{ sourceHash: Hex; preSubmitUsdceBalance: bigint }> {\n const depositWalletAddress = await getDepositWalletAddress(messenger, from);\n const relayDepositAddress = extractRelayDepositAddress(quote.original);\n const amount = BigInt(quote.sourceAmount.raw);\n\n const preSubmitUsdceBalance = await readUsdceBalanceOrZero(\n messenger,\n depositWalletAddress,\n );\n\n log('Submitting unwrap batch to Relay deposit address', {\n depositWalletAddress,\n relayDepositAddress,\n amount: amount.toString(),\n preSubmitUsdceBalance: preSubmitUsdceBalance.toString(),\n });\n\n const result = await submitDepositWalletBatch(messenger, {\n eoa: from,\n depositWallet: depositWalletAddress,\n calls: [\n {\n target: POLYGON_PUSD_ADDRESS,\n value: '0',\n data: encodeApprove(POLYMARKET_COLLATERAL_OFFRAMP_POLYGON, amount),\n },\n {\n target: POLYMARKET_COLLATERAL_OFFRAMP_POLYGON,\n value: '0',\n data: encodeUnwrap({\n asset: POLYGON_USDCE_ADDRESS,\n recipient: relayDepositAddress,\n amount,\n }),\n },\n ],\n });\n\n return { ...result, preSubmitUsdceBalance };\n}\n\nexport async function sweepPolymarketDepositWallet(\n from: Hex,\n messenger: TransactionPayControllerMessenger,\n options: {\n relayStatus: RelayStatus | 'timeout';\n preSubmitUsdceBalance: bigint;\n },\n): Promise<void> {\n const isRefund =\n options.relayStatus === 'refund' || options.relayStatus === 'refunded';\n const waitForBalanceAbove = isRefund\n ? options.preSubmitUsdceBalance\n : undefined;\n\n const depositWalletAddress = await getDepositWalletAddress(messenger, from);\n const usdceBalance = await readDepositWalletUsdceBalance(\n messenger,\n depositWalletAddress,\n waitForBalanceAbove,\n );\n\n if (usdceBalance === undefined) {\n return;\n }\n\n if (usdceBalance === 0n) {\n log('USDC.e sweep: nothing to wrap');\n return;\n }\n\n if (waitForBalanceAbove !== undefined && usdceBalance > waitForBalanceAbove) {\n log('USDC.e sweep: waiting for relayer RPC to catch up to new balance');\n await new Promise((resolve) =>\n setTimeout(resolve, SWEEP_RELAYER_SETTLE_DELAY_MS),\n );\n }\n\n try {\n await submitDepositWalletBatch(messenger, {\n eoa: from,\n depositWallet: depositWalletAddress,\n calls: [\n {\n target: POLYGON_USDCE_ADDRESS,\n value: '0',\n data: encodeApprove(\n POLYMARKET_COLLATERAL_ONRAMP_POLYGON,\n usdceBalance,\n ),\n },\n {\n target: POLYMARKET_COLLATERAL_ONRAMP_POLYGON,\n value: '0',\n data: encodeWrap({\n asset: POLYGON_USDCE_ADDRESS,\n recipient: depositWalletAddress,\n amount: usdceBalance,\n }),\n },\n ],\n });\n } catch (error) {\n log('USDC.e sweep: batch submission failed', { error });\n }\n}\n\nasync function readUsdceBalanceOrZero(\n messenger: TransactionPayControllerMessenger,\n depositWalletAddress: Hex,\n): Promise<bigint> {\n try {\n const raw = await getLiveTokenBalance(\n messenger,\n depositWalletAddress,\n CHAIN_ID_POLYGON,\n POLYGON_USDCE_ADDRESS,\n );\n return BigInt(raw);\n } catch (error) {\n log('USDC.e balance read failed, defaulting to zero', { error });\n return 0n;\n }\n}\n\nasync function readDepositWalletUsdceBalance(\n messenger: TransactionPayControllerMessenger,\n depositWalletAddress: Hex,\n waitForBalanceAbove: bigint | undefined,\n): Promise<bigint | undefined> {\n const shouldRetry = waitForBalanceAbove !== undefined;\n const maxAttempts = shouldRetry ? SWEEP_BALANCE_RETRY_ATTEMPTS : 1;\n let lastBalance = 0n;\n\n for (let attempt = 1; attempt <= maxAttempts; attempt++) {\n if (attempt > 1) {\n await new Promise((resolve) =>\n setTimeout(resolve, SWEEP_BALANCE_RETRY_DELAY_MS),\n );\n }\n\n try {\n const raw = await getLiveTokenBalance(\n messenger,\n depositWalletAddress,\n CHAIN_ID_POLYGON,\n POLYGON_USDCE_ADDRESS,\n );\n lastBalance = BigInt(raw);\n } catch (error) {\n log('USDC.e sweep: failed to read deposit wallet balance', { error });\n return undefined;\n }\n\n log('USDC.e sweep: deposit wallet balance', {\n depositWalletAddress,\n balance: lastBalance.toString(),\n attempt,\n waitForBalanceAbove: waitForBalanceAbove?.toString(),\n });\n\n const hasIncreased =\n waitForBalanceAbove === undefined || lastBalance > waitForBalanceAbove;\n\n if (hasIncreased) {\n return lastBalance;\n }\n }\n\n return lastBalance;\n}\n\nasync function getDepositWalletAddress(\n messenger: TransactionPayControllerMessenger,\n eoa: Hex,\n): Promise<Hex> {\n const depositWalletAddress = await messenger.call(\n 'TransactionPayController:polymarketGetDepositWalletAddress',\n { eoa },\n );\n log('Polymarket callback: getDepositWalletAddress', {\n eoa,\n depositWalletAddress,\n });\n return depositWalletAddress;\n}\n\nasync function submitDepositWalletBatch(\n messenger: TransactionPayControllerMessenger,\n params: {\n eoa: Hex;\n depositWallet: Hex;\n calls: { target: Hex; data: Hex; value: string }[];\n },\n): Promise<{ sourceHash: Hex }> {\n log('Polymarket callback: submitDepositWalletBatch', {\n eoa: params.eoa,\n depositWallet: params.depositWallet,\n callCount: params.calls.length,\n });\n const result = await messenger.call(\n 'TransactionPayController:polymarketSubmitDepositWalletBatch',\n params,\n );\n log('Polymarket callback: submitDepositWalletBatch returned', {\n sourceHash: result.sourceHash,\n });\n return result;\n}\n\nfunction extractRelayDepositAddress(relayQuote: RelayQuote): Hex {\n const depositStep = relayQuote.steps.find((step) => step.id === 'deposit');\n\n if (depositStep?.kind !== 'transaction') {\n throw new Error(\n 'Polymarket deposit wallet withdraw: Relay quote has no deposit step',\n );\n }\n\n const transactionStep = depositStep as RelayTransactionStep;\n const depositCallData = transactionStep.items[0]?.data?.data;\n\n if (!depositCallData) {\n throw new Error(\n 'Polymarket deposit wallet withdraw: Relay quote deposit step is missing calldata',\n );\n }\n\n return extractErc20TransferRecipient(depositCallData);\n}\n"]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Hex } from "@metamask/utils";
|
|
2
|
+
import type { QuoteRequest, TransactionPayControllerMessenger, TransactionPayQuote } from "../../../types.cjs";
|
|
3
|
+
import type { RelayQuote, RelayQuoteRequest, RelayStatus } from "../types.cjs";
|
|
4
|
+
export declare function applyPolymarketDepositWalletOverrides(body: RelayQuoteRequest, request: QuoteRequest, messenger: TransactionPayControllerMessenger): Promise<void>;
|
|
5
|
+
export declare function submitPolymarketWithdraw(quote: TransactionPayQuote<RelayQuote>, from: Hex, messenger: TransactionPayControllerMessenger): Promise<{
|
|
6
|
+
sourceHash: Hex;
|
|
7
|
+
preSubmitUsdceBalance: bigint;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function sweepPolymarketDepositWallet(from: Hex, messenger: TransactionPayControllerMessenger, options: {
|
|
10
|
+
relayStatus: RelayStatus | 'timeout';
|
|
11
|
+
preSubmitUsdceBalance: bigint;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=withdraw.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.d.cts","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,OAAO,KAAK,EACV,YAAY,EACZ,iCAAiC,EACjC,mBAAmB,EACpB,2BAAuB;AAExB,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EAEZ,qBAAiB;AAiBlB,wBAAsB,qCAAqC,CACzD,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,iCAAiC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACtC,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,iCAAiC,GAC3C,OAAO,CAAC;IAAE,UAAU,EAAE,GAAG,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC7D;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,iCAAiC,EAC5C,OAAO,EAAE;IACP,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GACA,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Hex } from "@metamask/utils";
|
|
2
|
+
import type { QuoteRequest, TransactionPayControllerMessenger, TransactionPayQuote } from "../../../types.mjs";
|
|
3
|
+
import type { RelayQuote, RelayQuoteRequest, RelayStatus } from "../types.mjs";
|
|
4
|
+
export declare function applyPolymarketDepositWalletOverrides(body: RelayQuoteRequest, request: QuoteRequest, messenger: TransactionPayControllerMessenger): Promise<void>;
|
|
5
|
+
export declare function submitPolymarketWithdraw(quote: TransactionPayQuote<RelayQuote>, from: Hex, messenger: TransactionPayControllerMessenger): Promise<{
|
|
6
|
+
sourceHash: Hex;
|
|
7
|
+
preSubmitUsdceBalance: bigint;
|
|
8
|
+
}>;
|
|
9
|
+
export declare function sweepPolymarketDepositWallet(from: Hex, messenger: TransactionPayControllerMessenger, options: {
|
|
10
|
+
relayStatus: RelayStatus | 'timeout';
|
|
11
|
+
preSubmitUsdceBalance: bigint;
|
|
12
|
+
}): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=withdraw.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withdraw.d.mts","sourceRoot":"","sources":["../../../../src/strategy/relay/polymarket/withdraw.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAS3C,OAAO,KAAK,EACV,YAAY,EACZ,iCAAiC,EACjC,mBAAmB,EACpB,2BAAuB;AAExB,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,WAAW,EAEZ,qBAAiB;AAiBlB,wBAAsB,qCAAqC,CACzD,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,YAAY,EACrB,SAAS,EAAE,iCAAiC,GAC3C,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,wBAAwB,CAC5C,KAAK,EAAE,mBAAmB,CAAC,UAAU,CAAC,EACtC,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,iCAAiC,GAC3C,OAAO,CAAC;IAAE,UAAU,EAAE,GAAG,CAAC;IAAC,qBAAqB,EAAE,MAAM,CAAA;CAAE,CAAC,CAuC7D;AAED,wBAAsB,4BAA4B,CAChD,IAAI,EAAE,GAAG,EACT,SAAS,EAAE,iCAAiC,EAC5C,OAAO,EAAE;IACP,WAAW,EAAE,WAAW,GAAG,SAAS,CAAC;IACrC,qBAAqB,EAAE,MAAM,CAAC;CAC/B,GACA,OAAO,CAAC,IAAI,CAAC,CAyDf"}
|