@reptilianhq/uniswap-sdk 0.5.0 → 0.6.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.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.Percent = exports.V4PositionManager = exports.Position = exports.Hook = exports.Pool = void 0;
3
+ exports.permit2Address = exports.AllowanceTransfer = exports.Percent = exports.V4PositionManager = exports.Position = exports.Hook = exports.Pool = void 0;
4
4
  // Upstream 2.3.3's ESM export contains extensionless directory imports that
5
5
  // native Node cannot resolve. Its public require export works in Node and
6
6
  // bundlers. Keep this compatibility seam local instead of forking the SDK.
@@ -11,4 +11,7 @@ Object.defineProperty(exports, "Position", { enumerable: true, get: function ()
11
11
  Object.defineProperty(exports, "V4PositionManager", { enumerable: true, get: function () { return v4_sdk_1.V4PositionManager; } });
12
12
  var sdk_core_1 = require("@uniswap/sdk-core");
13
13
  Object.defineProperty(exports, "Percent", { enumerable: true, get: function () { return sdk_core_1.Percent; } });
14
+ var permit2_sdk_1 = require("@uniswap/permit2-sdk");
15
+ Object.defineProperty(exports, "AllowanceTransfer", { enumerable: true, get: function () { return permit2_sdk_1.AllowanceTransfer; } });
16
+ Object.defineProperty(exports, "permit2Address", { enumerable: true, get: function () { return permit2_sdk_1.permit2Address; } });
14
17
  //# sourceMappingURL=official-sdk.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"official-sdk.cjs","sourceRoot":"","sources":["../src/official-sdk.cts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,0CAA0E;AAAjE,8FAAA,IAAI,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAChD,8CAA4C;AAAnC,mGAAA,OAAO,OAAA","sourcesContent":["// Upstream 2.3.3's ESM export contains extensionless directory imports that\n// native Node cannot resolve. Its public require export works in Node and\n// bundlers. Keep this compatibility seam local instead of forking the SDK.\nexport { Pool, Hook, Position, V4PositionManager } from '@uniswap/v4-sdk';\nexport { Percent } from '@uniswap/sdk-core';\n"]}
1
+ {"version":3,"file":"official-sdk.cjs","sourceRoot":"","sources":["../src/official-sdk.cts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,0CAA0E;AAAjE,8FAAA,IAAI,OAAA;AAAE,8FAAA,IAAI,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,2GAAA,iBAAiB,OAAA;AAChD,8CAA4C;AAAnC,mGAAA,OAAO,OAAA;AAChB,oDAAyE;AAAhE,gHAAA,iBAAiB,OAAA;AAAE,6GAAA,cAAc,OAAA","sourcesContent":["// Upstream 2.3.3's ESM export contains extensionless directory imports that\n// native Node cannot resolve. Its public require export works in Node and\n// bundlers. Keep this compatibility seam local instead of forking the SDK.\nexport { Pool, Hook, Position, V4PositionManager } from '@uniswap/v4-sdk';\nexport { Percent } from '@uniswap/sdk-core';\nexport { AllowanceTransfer, permit2Address } from '@uniswap/permit2-sdk';\n"]}
@@ -1,3 +1,4 @@
1
1
  export { Pool, Hook, Position, V4PositionManager } from '@uniswap/v4-sdk';
2
2
  export { Percent } from '@uniswap/sdk-core';
3
+ export { AllowanceTransfer, permit2Address } from '@uniswap/permit2-sdk';
3
4
  //# sourceMappingURL=official-sdk.d.cts.map
@@ -1 +1 @@
1
- {"version":3,"file":"official-sdk.d.cts","sourceRoot":"","sources":["../src/official-sdk.cts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"official-sdk.d.cts","sourceRoot":"","sources":["../src/official-sdk.cts"],"names":[],"mappings":"AAGA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,62 @@
1
+ import type { Address } from 'viem';
2
+ export type V4PermitBatchDetailInput = {
3
+ token: Address;
4
+ amount: bigint;
5
+ expiration: bigint;
6
+ nonce: bigint;
7
+ };
8
+ export type V4PermitBatchTypedData = {
9
+ domain: {
10
+ name: 'Permit2';
11
+ chainId: number;
12
+ verifyingContract: Address;
13
+ };
14
+ types: {
15
+ PermitBatch: readonly {
16
+ name: string;
17
+ type: string;
18
+ }[];
19
+ PermitDetails: readonly {
20
+ name: string;
21
+ type: string;
22
+ }[];
23
+ };
24
+ primaryType: 'PermitBatch';
25
+ message: {
26
+ details: readonly {
27
+ token: Address;
28
+ amount: bigint;
29
+ expiration: bigint;
30
+ nonce: bigint;
31
+ }[];
32
+ spender: Address;
33
+ sigDeadline: bigint;
34
+ };
35
+ };
36
+ /**
37
+ * Builds the EIP-712 typed data for a caller's wallet to sign, authorizing PositionManager
38
+ * to pull the tokens a v4 mint needs via Permit2's `AllowanceTransfer.permitBatch`, instead
39
+ * of a prior plain ERC20 `approve`. This SDK never holds a signer — the caller signs this
40
+ * with their own wallet (`eth_signTypedData_v4`) and passes the resulting signature on to
41
+ * whatever assembles the mint's `batchPermit` option; encoding that consumption side is a
42
+ * separate, later piece.
43
+ *
44
+ * Delegates the domain and EIP-712 type definitions to `@uniswap/permit2-sdk`'s
45
+ * `AllowanceTransfer.getPermitData` rather than hand-authoring them: Permit2's typed-data
46
+ * schema lives only in its deployed contract, and no vendored Uniswap SDK re-derives it —
47
+ * getting it wrong produces a signature that fails silently on-chain, not a caught error.
48
+ *
49
+ * `spender` is trusted as given — this function does not know what contract the caller
50
+ * intends to grant to. Callers must pass PositionManager's own address, not a value taken
51
+ * from unreviewed input; a wrong `spender` here authorizes an arbitrary contract to pull
52
+ * the caller's tokens, and this SDK has no way to detect that from the typed data alone.
53
+ */
54
+ export declare function buildV4MintPermitBatchTypedData(input: {
55
+ chainId: number;
56
+ spender: Address;
57
+ details: readonly V4PermitBatchDetailInput[];
58
+ sigDeadline: bigint;
59
+ /** Overrides the canonical per-chain Permit2 deployment; only for a non-standard deployment. */
60
+ permit2Address?: Address;
61
+ }): V4PermitBatchTypedData;
62
+ //# sourceMappingURL=permit2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permit2.d.ts","sourceRoot":"","sources":["../src/permit2.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAMpC,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE,CAAC;IACzE,KAAK,EAAE;QACL,WAAW,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QACvD,aAAa,EAAE,SAAS;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KAC1D,CAAC;IACF,WAAW,EAAE,aAAa,CAAC;IAC3B,OAAO,EAAE;QACP,OAAO,EAAE,SAAS;YAAE,KAAK,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;QAC1F,OAAO,EAAE,OAAO,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;CACH,CAAC;AAYF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,SAAS,wBAAwB,EAAE,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,gGAAgG;IAChG,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B,GAAG,sBAAsB,CA+CzB"}
@@ -0,0 +1,81 @@
1
+ import { zeroAddress } from 'viem';
2
+ import { AllowanceTransfer, permit2Address } from './official-sdk.cjs';
3
+ import { checkedAddress } from './pool.js';
4
+ import { invalid, UniswapSdkError } from './errors.js';
5
+ function nonNegative(value, label) {
6
+ if (value < 0n)
7
+ invalid(`${label} must not be negative`);
8
+ }
9
+ function nonZeroAddress(value, label) {
10
+ const checked = checkedAddress(value);
11
+ if (checked === zeroAddress)
12
+ invalid(`${label} cannot be the zero address`);
13
+ return checked;
14
+ }
15
+ /**
16
+ * Builds the EIP-712 typed data for a caller's wallet to sign, authorizing PositionManager
17
+ * to pull the tokens a v4 mint needs via Permit2's `AllowanceTransfer.permitBatch`, instead
18
+ * of a prior plain ERC20 `approve`. This SDK never holds a signer — the caller signs this
19
+ * with their own wallet (`eth_signTypedData_v4`) and passes the resulting signature on to
20
+ * whatever assembles the mint's `batchPermit` option; encoding that consumption side is a
21
+ * separate, later piece.
22
+ *
23
+ * Delegates the domain and EIP-712 type definitions to `@uniswap/permit2-sdk`'s
24
+ * `AllowanceTransfer.getPermitData` rather than hand-authoring them: Permit2's typed-data
25
+ * schema lives only in its deployed contract, and no vendored Uniswap SDK re-derives it —
26
+ * getting it wrong produces a signature that fails silently on-chain, not a caught error.
27
+ *
28
+ * `spender` is trusted as given — this function does not know what contract the caller
29
+ * intends to grant to. Callers must pass PositionManager's own address, not a value taken
30
+ * from unreviewed input; a wrong `spender` here authorizes an arbitrary contract to pull
31
+ * the caller's tokens, and this SDK has no way to detect that from the typed data alone.
32
+ */
33
+ export function buildV4MintPermitBatchTypedData(input) {
34
+ if (!Number.isSafeInteger(input.chainId) || input.chainId <= 0)
35
+ invalid('chainId must be a positive safe integer');
36
+ if (!input.details.length)
37
+ invalid('Permit batch must include at least one token detail');
38
+ nonNegative(input.sigDeadline, 'sigDeadline');
39
+ const spender = nonZeroAddress(input.spender, 'spender');
40
+ const resolvedPermit2Address = nonZeroAddress(input.permit2Address ?? permit2Address(input.chainId), 'permit2Address');
41
+ try {
42
+ const details = input.details.map(detail => {
43
+ nonNegative(detail.amount, 'amount');
44
+ nonNegative(detail.expiration, 'expiration');
45
+ nonNegative(detail.nonce, 'nonce');
46
+ return {
47
+ token: checkedAddress(detail.token),
48
+ amount: detail.amount.toString(),
49
+ expiration: detail.expiration.toString(),
50
+ nonce: detail.nonce.toString(),
51
+ };
52
+ });
53
+ const { domain, types, values } = AllowanceTransfer.getPermitData({ details, spender, sigDeadline: input.sigDeadline.toString() }, resolvedPermit2Address, input.chainId);
54
+ const batch = values;
55
+ if (domain.name !== 'Permit2')
56
+ invalid(`Official Permit2 SDK returned an unexpected domain name: ${String(domain.name)}`);
57
+ return {
58
+ domain: { name: 'Permit2', chainId: domain.chainId, verifyingContract: checkedAddress(domain.verifyingContract) },
59
+ // Deep-copied: `types` is the dependency's own module-level object: mutating the
60
+ // returned value would otherwise corrupt every future call in this process.
61
+ types: structuredClone(types),
62
+ primaryType: 'PermitBatch',
63
+ message: {
64
+ details: batch.details.map(detail => ({
65
+ token: checkedAddress(detail.token),
66
+ amount: BigInt(detail.amount),
67
+ expiration: BigInt(detail.expiration),
68
+ nonce: BigInt(detail.nonce),
69
+ })),
70
+ spender: checkedAddress(batch.spender),
71
+ sigDeadline: BigInt(batch.sigDeadline),
72
+ },
73
+ };
74
+ }
75
+ catch (cause) {
76
+ if (cause instanceof UniswapSdkError)
77
+ throw cause;
78
+ throw new UniswapSdkError('INVALID_ARGUMENT', 'Official Permit2 SDK rejected the permit batch parameters', { cause });
79
+ }
80
+ }
81
+ //# sourceMappingURL=permit2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permit2.js","sourceRoot":"","sources":["../src/permit2.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Address } from 'viem';\nimport { zeroAddress } from 'viem';\nimport { AllowanceTransfer, permit2Address } from './official-sdk.cjs';\nimport { checkedAddress } from './pool.js';\nimport { invalid, UniswapSdkError } from './errors.js';\n\nexport type V4PermitBatchDetailInput = {\n token: Address;\n amount: bigint;\n expiration: bigint;\n nonce: bigint;\n};\n\nexport type V4PermitBatchTypedData = {\n domain: { name: 'Permit2'; chainId: number; verifyingContract: Address };\n types: {\n PermitBatch: readonly { name: string; type: string }[];\n PermitDetails: readonly { name: string; type: string }[];\n };\n primaryType: 'PermitBatch';\n message: {\n details: readonly { token: Address; amount: bigint; expiration: bigint; nonce: bigint }[];\n spender: Address;\n sigDeadline: bigint;\n };\n};\n\nfunction nonNegative(value: bigint, label: string): void {\n if (value < 0n) invalid(`${label} must not be negative`);\n}\n\nfunction nonZeroAddress(value: Address, label: string): Address {\n const checked = checkedAddress(value);\n if (checked === zeroAddress) invalid(`${label} cannot be the zero address`);\n return checked;\n}\n\n/**\n * Builds the EIP-712 typed data for a caller's wallet to sign, authorizing PositionManager\n * to pull the tokens a v4 mint needs via Permit2's `AllowanceTransfer.permitBatch`, instead\n * of a prior plain ERC20 `approve`. This SDK never holds a signer — the caller signs this\n * with their own wallet (`eth_signTypedData_v4`) and passes the resulting signature on to\n * whatever assembles the mint's `batchPermit` option; encoding that consumption side is a\n * separate, later piece.\n *\n * Delegates the domain and EIP-712 type definitions to `@uniswap/permit2-sdk`'s\n * `AllowanceTransfer.getPermitData` rather than hand-authoring them: Permit2's typed-data\n * schema lives only in its deployed contract, and no vendored Uniswap SDK re-derives it —\n * getting it wrong produces a signature that fails silently on-chain, not a caught error.\n *\n * `spender` is trusted as given — this function does not know what contract the caller\n * intends to grant to. Callers must pass PositionManager's own address, not a value taken\n * from unreviewed input; a wrong `spender` here authorizes an arbitrary contract to pull\n * the caller's tokens, and this SDK has no way to detect that from the typed data alone.\n */\nexport function buildV4MintPermitBatchTypedData(input: {\n chainId: number;\n spender: Address;\n details: readonly V4PermitBatchDetailInput[];\n sigDeadline: bigint;\n /** Overrides the canonical per-chain Permit2 deployment; only for a non-standard deployment. */\n permit2Address?: Address;\n}): V4PermitBatchTypedData {\n if (!Number.isSafeInteger(input.chainId) || input.chainId <= 0) invalid('chainId must be a positive safe integer');\n if (!input.details.length) invalid('Permit batch must include at least one token detail');\n nonNegative(input.sigDeadline, 'sigDeadline');\n const spender = nonZeroAddress(input.spender, 'spender');\n const resolvedPermit2Address = nonZeroAddress(input.permit2Address ?? (permit2Address(input.chainId) as Address), 'permit2Address');\n\n try {\n const details = input.details.map(detail => {\n nonNegative(detail.amount, 'amount');\n nonNegative(detail.expiration, 'expiration');\n nonNegative(detail.nonce, 'nonce');\n return {\n token: checkedAddress(detail.token),\n amount: detail.amount.toString(),\n expiration: detail.expiration.toString(),\n nonce: detail.nonce.toString(),\n };\n });\n const { domain, types, values } = AllowanceTransfer.getPermitData(\n { details, spender, sigDeadline: input.sigDeadline.toString() },\n resolvedPermit2Address,\n input.chainId,\n );\n const batch = values as { details: { token: string; amount: string; expiration: string; nonce: string }[]; spender: string; sigDeadline: string };\n if (domain.name !== 'Permit2') invalid(`Official Permit2 SDK returned an unexpected domain name: ${String(domain.name)}`);\n return {\n domain: { name: 'Permit2', chainId: domain.chainId as number, verifyingContract: checkedAddress(domain.verifyingContract as Address) },\n // Deep-copied: `types` is the dependency's own module-level object: mutating the\n // returned value would otherwise corrupt every future call in this process.\n types: structuredClone(types) as unknown as V4PermitBatchTypedData['types'],\n primaryType: 'PermitBatch',\n message: {\n details: batch.details.map(detail => ({\n token: checkedAddress(detail.token as Address),\n amount: BigInt(detail.amount),\n expiration: BigInt(detail.expiration),\n nonce: BigInt(detail.nonce),\n })),\n spender: checkedAddress(batch.spender as Address),\n sigDeadline: BigInt(batch.sigDeadline),\n },\n };\n } catch (cause) {\n if (cause instanceof UniswapSdkError) throw cause;\n throw new UniswapSdkError('INVALID_ARGUMENT', 'Official Permit2 SDK rejected the permit batch parameters', { cause });\n }\n}\n"]}
package/dist/v4.d.ts CHANGED
@@ -9,4 +9,6 @@ export { decodeV4HookPermissions, unmodelledV4HookPermissions } from './hooks.js
9
9
  export type { V4HookPermissions } from './hooks.js';
10
10
  export { buildV4MintPositionTransaction, reviewV4MintPositionCalldata } from './v4-transactions.js';
11
11
  export type { V4ExpectedMint, V4MintActionParams, V4MintPositionParams, V4PoolKeyMaterial, V4PoolState, V4TransactionMaterial } from './v4-transactions.js';
12
+ export { buildV4MintPermitBatchTypedData } from './permit2.js';
13
+ export type { V4PermitBatchDetailInput, V4PermitBatchTypedData } from './permit2.js';
12
14
  //# sourceMappingURL=v4.d.ts.map
package/dist/v4.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v4.d.ts","sourceRoot":"","sources":["../src/v4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACnG,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpG,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"v4.d.ts","sourceRoot":"","sources":["../src/v4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC9E,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACnG,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACpH,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC3D,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAClF,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AACpD,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpG,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC5J,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC;AAC/D,YAAY,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC"}
package/dist/v4.js CHANGED
@@ -4,4 +4,5 @@ export { readV4TickWindow, ticksInWord } from './depth.js';
4
4
  export { decodeV4PoolInitialization } from './events.js';
5
5
  export { decodeV4HookPermissions, unmodelledV4HookPermissions } from './hooks.js';
6
6
  export { buildV4MintPositionTransaction, reviewV4MintPositionCalldata } from './v4-transactions.js';
7
+ export { buildV4MintPermitBatchTypedData } from './permit2.js';
7
8
  //# sourceMappingURL=v4.js.map
package/dist/v4.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v4.js","sourceRoot":"","sources":["../src/v4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC","sourcesContent":["export { poolKeyFromCurrencies, getV4PoolId, poolReference } from './pool.js';\nexport type { V4Deployment, V4PoolKey, V4PoolReference } from './pool.js';\nexport { readV4Pool, quoteV4ExactInput, quoteV4Batch, verifyV4DeploymentWiring } from './reads.js';\nexport type { V4ReadClient, V4Observation, V4PoolSnapshot, V4QuoteInput, V4Quote, V4QuoteResult } from './reads.js';\nexport { readV4TickWindow, ticksInWord } from './depth.js';\nexport type { V4Tick, V4TickWindow } from './depth.js';\nexport { decodeV4PoolInitialization } from './events.js';\nexport { decodeV4HookPermissions, unmodelledV4HookPermissions } from './hooks.js';\nexport type { V4HookPermissions } from './hooks.js';\nexport { buildV4MintPositionTransaction, reviewV4MintPositionCalldata } from './v4-transactions.js';\nexport type { V4ExpectedMint, V4MintActionParams, V4MintPositionParams, V4PoolKeyMaterial, V4PoolState, V4TransactionMaterial } from './v4-transactions.js';\n"]}
1
+ {"version":3,"file":"v4.js","sourceRoot":"","sources":["../src/v4.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE9E,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEnG,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAC;AAElF,OAAO,EAAE,8BAA8B,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AAEpG,OAAO,EAAE,+BAA+B,EAAE,MAAM,cAAc,CAAC","sourcesContent":["export { poolKeyFromCurrencies, getV4PoolId, poolReference } from './pool.js';\nexport type { V4Deployment, V4PoolKey, V4PoolReference } from './pool.js';\nexport { readV4Pool, quoteV4ExactInput, quoteV4Batch, verifyV4DeploymentWiring } from './reads.js';\nexport type { V4ReadClient, V4Observation, V4PoolSnapshot, V4QuoteInput, V4Quote, V4QuoteResult } from './reads.js';\nexport { readV4TickWindow, ticksInWord } from './depth.js';\nexport type { V4Tick, V4TickWindow } from './depth.js';\nexport { decodeV4PoolInitialization } from './events.js';\nexport { decodeV4HookPermissions, unmodelledV4HookPermissions } from './hooks.js';\nexport type { V4HookPermissions } from './hooks.js';\nexport { buildV4MintPositionTransaction, reviewV4MintPositionCalldata } from './v4-transactions.js';\nexport type { V4ExpectedMint, V4MintActionParams, V4MintPositionParams, V4PoolKeyMaterial, V4PoolState, V4TransactionMaterial } from './v4-transactions.js';\nexport { buildV4MintPermitBatchTypedData } from './permit2.js';\nexport type { V4PermitBatchDetailInput, V4PermitBatchTypedData } from './permit2.js';\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@reptilianhq/uniswap-sdk",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "Deployment-explicit Uniswap observations and reviewed transaction material.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -68,6 +68,10 @@
68
68
  "types": "./dist/providers.d.ts",
69
69
  "import": "./dist/providers.js"
70
70
  },
71
+ "./permit2": {
72
+ "types": "./dist/permit2.d.ts",
73
+ "import": "./dist/permit2.js"
74
+ },
71
75
  "./provenance/mainnet.json": "./provenance/mainnet.json",
72
76
  "./provenance/testnet.json": "./provenance/testnet.json"
73
77
  },
@@ -88,8 +92,10 @@
88
92
  "prepack": "npm run build"
89
93
  },
90
94
  "dependencies": {
95
+ "@uniswap/permit2-sdk": "1.4.0",
91
96
  "@uniswap/sdk-core": "7.19.2",
92
- "@uniswap/v4-sdk": "2.3.3"
97
+ "@uniswap/v4-sdk": "2.3.3",
98
+ "tslib": "2.8.1"
93
99
  },
94
100
  "peerDependencies": {
95
101
  "viem": ">=2.55.0 <3"
@@ -119,6 +125,6 @@
119
125
  "reptilianRelease": {
120
126
  "schemaVersion": 1,
121
127
  "group": "uniswap-sdk",
122
- "sourceSha": "ed44539b6ad5c269898c2c164b772d897e53f942"
128
+ "sourceSha": "d35608758d0aaad7f72819147bc9dd39ad612a2c"
123
129
  }
124
130
  }