@ring-protocol/permit2-sdk 0.1.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.
Files changed (89) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +12 -0
  3. package/dist/cjs/abis/Permit2.json +830 -0
  4. package/dist/cjs/src/allowanceTransfer.d.ts +36 -0
  5. package/dist/cjs/src/allowanceTransfer.js +72 -0
  6. package/dist/cjs/src/allowanceTransfer.js.map +1 -0
  7. package/dist/cjs/src/allowanceTransfer.test.d.ts +1 -0
  8. package/dist/cjs/src/allowanceTransfer.test.js +95 -0
  9. package/dist/cjs/src/allowanceTransfer.test.js.map +1 -0
  10. package/dist/cjs/src/constants.d.ts +13 -0
  11. package/dist/cjs/src/constants.js +29 -0
  12. package/dist/cjs/src/constants.js.map +1 -0
  13. package/dist/cjs/src/constants.test.d.ts +1 -0
  14. package/dist/cjs/src/constants.test.js +19 -0
  15. package/dist/cjs/src/constants.test.js.map +1 -0
  16. package/dist/cjs/src/domain.d.ts +7 -0
  17. package/dist/cjs/src/domain.js +13 -0
  18. package/dist/cjs/src/domain.js.map +1 -0
  19. package/dist/cjs/src/index.d.ts +4 -0
  20. package/dist/cjs/src/index.js +8 -0
  21. package/dist/cjs/src/index.js.map +1 -0
  22. package/dist/cjs/src/providers/AllowanceProvider.d.ts +17 -0
  23. package/dist/cjs/src/providers/AllowanceProvider.js +35 -0
  24. package/dist/cjs/src/providers/AllowanceProvider.js.map +1 -0
  25. package/dist/cjs/src/providers/SignatureProvider.d.ts +74 -0
  26. package/dist/cjs/src/providers/SignatureProvider.js +146 -0
  27. package/dist/cjs/src/providers/SignatureProvider.js.map +1 -0
  28. package/dist/cjs/src/providers/SignatureProvider.test.d.ts +1 -0
  29. package/dist/cjs/src/providers/SignatureProvider.test.js +247 -0
  30. package/dist/cjs/src/providers/SignatureProvider.test.js.map +1 -0
  31. package/dist/cjs/src/providers/index.d.ts +2 -0
  32. package/dist/cjs/src/providers/index.js +6 -0
  33. package/dist/cjs/src/providers/index.js.map +1 -0
  34. package/dist/cjs/src/signatureTransfer.d.ts +41 -0
  35. package/dist/cjs/src/signatureTransfer.js +93 -0
  36. package/dist/cjs/src/signatureTransfer.js.map +1 -0
  37. package/dist/cjs/src/signatureTransfer.test.d.ts +1 -0
  38. package/dist/cjs/src/signatureTransfer.test.js +109 -0
  39. package/dist/cjs/src/signatureTransfer.test.js.map +1 -0
  40. package/dist/esm/abis/Permit2.json +830 -0
  41. package/dist/esm/src/allowanceTransfer.d.ts +36 -0
  42. package/dist/esm/src/allowanceTransfer.js +67 -0
  43. package/dist/esm/src/allowanceTransfer.js.map +1 -0
  44. package/dist/esm/src/allowanceTransfer.test.d.ts +1 -0
  45. package/dist/esm/src/allowanceTransfer.test.js +93 -0
  46. package/dist/esm/src/allowanceTransfer.test.js.map +1 -0
  47. package/dist/esm/src/constants.d.ts +13 -0
  48. package/dist/esm/src/constants.js +25 -0
  49. package/dist/esm/src/constants.js.map +1 -0
  50. package/dist/esm/src/constants.test.d.ts +1 -0
  51. package/dist/esm/src/constants.test.js +17 -0
  52. package/dist/esm/src/constants.test.js.map +1 -0
  53. package/dist/esm/src/domain.d.ts +7 -0
  54. package/dist/esm/src/domain.js +9 -0
  55. package/dist/esm/src/domain.js.map +1 -0
  56. package/dist/esm/src/index.d.ts +4 -0
  57. package/dist/esm/src/index.js +5 -0
  58. package/dist/esm/src/index.js.map +1 -0
  59. package/dist/esm/src/providers/AllowanceProvider.d.ts +17 -0
  60. package/dist/esm/src/providers/AllowanceProvider.js +31 -0
  61. package/dist/esm/src/providers/AllowanceProvider.js.map +1 -0
  62. package/dist/esm/src/providers/SignatureProvider.d.ts +74 -0
  63. package/dist/esm/src/providers/SignatureProvider.js +142 -0
  64. package/dist/esm/src/providers/SignatureProvider.js.map +1 -0
  65. package/dist/esm/src/providers/SignatureProvider.test.d.ts +1 -0
  66. package/dist/esm/src/providers/SignatureProvider.test.js +245 -0
  67. package/dist/esm/src/providers/SignatureProvider.test.js.map +1 -0
  68. package/dist/esm/src/providers/index.d.ts +2 -0
  69. package/dist/esm/src/providers/index.js +3 -0
  70. package/dist/esm/src/providers/index.js.map +1 -0
  71. package/dist/esm/src/signatureTransfer.d.ts +41 -0
  72. package/dist/esm/src/signatureTransfer.js +88 -0
  73. package/dist/esm/src/signatureTransfer.js.map +1 -0
  74. package/dist/esm/src/signatureTransfer.test.d.ts +1 -0
  75. package/dist/esm/src/signatureTransfer.test.js +107 -0
  76. package/dist/esm/src/signatureTransfer.test.js.map +1 -0
  77. package/dist/types/src/allowanceTransfer.d.ts +36 -0
  78. package/dist/types/src/allowanceTransfer.test.d.ts +1 -0
  79. package/dist/types/src/constants.d.ts +13 -0
  80. package/dist/types/src/constants.test.d.ts +1 -0
  81. package/dist/types/src/domain.d.ts +7 -0
  82. package/dist/types/src/index.d.ts +4 -0
  83. package/dist/types/src/providers/AllowanceProvider.d.ts +17 -0
  84. package/dist/types/src/providers/SignatureProvider.d.ts +74 -0
  85. package/dist/types/src/providers/SignatureProvider.test.d.ts +1 -0
  86. package/dist/types/src/providers/index.d.ts +2 -0
  87. package/dist/types/src/signatureTransfer.d.ts +41 -0
  88. package/dist/types/src/signatureTransfer.test.d.ts +1 -0
  89. package/package.json +92 -0
@@ -0,0 +1,74 @@
1
+ import { BigNumber, BigNumberish } from '@ethersproject/bignumber';
2
+ import { Provider } from '@ethersproject/providers';
3
+ import { PermitTransferFrom, PermitBatchTransferFrom } from '../signatureTransfer';
4
+ export interface NonceValidationResult {
5
+ isUsed: boolean;
6
+ isExpired: boolean;
7
+ isValid: boolean;
8
+ }
9
+ export declare class SignatureProvider {
10
+ private provider;
11
+ private permit2Address;
12
+ private permit2;
13
+ constructor(provider: Provider, permit2Address: string);
14
+ /**
15
+ * Check if a nonce has been used for signature transfers
16
+ * @param owner The owner address
17
+ * @param nonce The nonce to check
18
+ * @returns true if the nonce has been used, false otherwise
19
+ */
20
+ isNonceUsed(owner: string, nonce: BigNumberish): Promise<boolean>;
21
+ /**
22
+ * Check if a permit has expired based on its deadline
23
+ * @param deadline The deadline timestamp
24
+ * @returns true if the permit has expired, false otherwise
25
+ */
26
+ isExpired(deadline: BigNumberish): Promise<boolean>;
27
+ /**
28
+ * Check if a permit is valid (not expired and nonce not used)
29
+ * @param permit The permit data to validate
30
+ * @returns true if the permit is valid, false otherwise
31
+ */
32
+ isPermitValid(permit: PermitTransferFrom | PermitBatchTransferFrom): Promise<boolean>;
33
+ /**
34
+ * Get detailed validation results for a permit
35
+ * @param permit The permit data to validate
36
+ * @returns Object containing validation results
37
+ */
38
+ validatePermit(permit: PermitTransferFrom | PermitBatchTransferFrom): Promise<NonceValidationResult>;
39
+ /**
40
+ * Get the current nonce bitmap for an owner at a specific word position
41
+ * @param owner The owner address
42
+ * @param wordPos The word position in the bitmap
43
+ * @returns The bitmap as a BigNumber
44
+ */
45
+ getNonceBitmap(owner: string, wordPos: BigNumberish): Promise<BigNumber>;
46
+ /**
47
+ * Check if a specific bit is set in the nonce bitmap
48
+ * @param bitmap The bitmap to check
49
+ * @param bitPos The bit position (0-255)
50
+ * @returns true if the bit is set, false otherwise
51
+ */
52
+ static isBitSet(bitmap: BigNumber, bitPos: number): boolean;
53
+ /**
54
+ * Get the word position and bit position for a given nonce
55
+ * @param nonce The nonce to analyze
56
+ * @returns Object containing wordPos and bitPos
57
+ */
58
+ static getNoncePositions(nonce: BigNumberish): {
59
+ wordPos: BigNumber;
60
+ bitPos: number;
61
+ };
62
+ /**
63
+ * Batch check multiple nonces for the same owner
64
+ * @param owner The owner address
65
+ * @param nonces Array of nonces to check
66
+ * @returns Array of boolean results indicating if each nonce is used
67
+ */
68
+ batchCheckNonces(owner: string, nonces: BigNumberish[]): Promise<boolean[]>;
69
+ /**
70
+ * Get the current block timestamp
71
+ * @returns Current block timestamp
72
+ */
73
+ getCurrentTimestamp(): Promise<number>;
74
+ }
@@ -0,0 +1,2 @@
1
+ export * from './AllowanceProvider';
2
+ export * from './SignatureProvider';
@@ -0,0 +1,41 @@
1
+ import { TypedDataDomain, TypedDataField } from '@ethersproject/abstract-signer';
2
+ import { BigNumberish } from '@ethersproject/bignumber';
3
+ export interface Witness {
4
+ witness: any;
5
+ witnessTypeName: string;
6
+ witnessType: Record<string, TypedDataField[]>;
7
+ }
8
+ export interface TokenPermissions {
9
+ token: string;
10
+ amount: BigNumberish;
11
+ }
12
+ export interface PermitTransferFrom {
13
+ permitted: TokenPermissions;
14
+ spender: string;
15
+ nonce: BigNumberish;
16
+ deadline: BigNumberish;
17
+ }
18
+ export interface PermitBatchTransferFrom {
19
+ permitted: TokenPermissions[];
20
+ spender: string;
21
+ nonce: BigNumberish;
22
+ deadline: BigNumberish;
23
+ }
24
+ export type PermitTransferFromData = {
25
+ domain: TypedDataDomain;
26
+ types: Record<string, TypedDataField[]>;
27
+ values: PermitTransferFrom;
28
+ };
29
+ export type PermitBatchTransferFromData = {
30
+ domain: TypedDataDomain;
31
+ types: Record<string, TypedDataField[]>;
32
+ values: PermitBatchTransferFrom;
33
+ };
34
+ export declare abstract class SignatureTransfer {
35
+ /**
36
+ * Cannot be constructed.
37
+ */
38
+ private constructor();
39
+ static getPermitData(permit: PermitTransferFrom | PermitBatchTransferFrom, permit2Address: string, chainId: number, witness?: Witness): PermitTransferFromData | PermitBatchTransferFromData;
40
+ static hash(permit: PermitTransferFrom | PermitBatchTransferFrom, permit2Address: string, chainId: number, witness?: Witness): string;
41
+ }
@@ -0,0 +1 @@
1
+ export {};
package/package.json ADDED
@@ -0,0 +1,92 @@
1
+ {
2
+ "name": "@ring-protocol/permit2-sdk",
3
+ "description": "An sdk for interacting with permit2.",
4
+ "repository": {
5
+ "type": "git",
6
+ "url": "https://github.com/Few-Protocol/ring-sdks.git"
7
+ },
8
+ "keywords": [
9
+ "uniswap",
10
+ "ethereum"
11
+ ],
12
+ "license": "MIT",
13
+ "main": "./dist/cjs/src/index.js",
14
+ "module": "./dist/esm/src/index.js",
15
+ "types": "./dist/types/src/index.d.ts",
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/types/src/index.d.ts",
19
+ "import": "./dist/esm/src/index.js",
20
+ "require": "./dist/cjs/src/index.js"
21
+ }
22
+ },
23
+ "sideEffects": false,
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "scripts": {
28
+ "build": "yarn clean && yarn build:cjs && yarn build:esm && yarn build:types",
29
+ "build:cjs": "tsc -p tsconfig.cjs.json",
30
+ "build:esm": "tsc -p tsconfig.esm.json",
31
+ "build:types": "tsc -p tsconfig.types.json",
32
+ "clean": "rm -rf ./dist",
33
+ "interop": "yarn node writeInterop.js",
34
+ "lint": "prettier --check src/",
35
+ "release": "semantic-release",
36
+ "test": "jest"
37
+ },
38
+ "dependencies": {
39
+ "ethers": "^5.7.0",
40
+ "tiny-invariant": "^1.1.0"
41
+ },
42
+ "devDependencies": {
43
+ "@types/jest": "^24.0.25",
44
+ "jest": "25.5.0",
45
+ "prettier": "^2.4.1",
46
+ "typescript": "^4.3.3"
47
+ },
48
+ "prettier": {
49
+ "printWidth": 120,
50
+ "semi": false,
51
+ "singleQuote": true
52
+ },
53
+ "publishConfig": {
54
+ "access": "public"
55
+ },
56
+ "release": {
57
+ "extends": "semantic-release-monorepo",
58
+ "branches": [
59
+ {
60
+ "name": "main",
61
+ "prerelease": false
62
+ }
63
+ ],
64
+ "plugins": [
65
+ [
66
+ "@semantic-release/commit-analyzer",
67
+ {
68
+ "preset": "angular",
69
+ "releaseRules": "../../publishing/release-rules.cjs"
70
+ }
71
+ ],
72
+ "@semantic-release/release-notes-generator",
73
+ [
74
+ "@semantic-release/exec",
75
+ {
76
+ "prepareCmd": "node ../../publishing/replace-workspace-deps.js"
77
+ }
78
+ ],
79
+ "@semantic-release/npm",
80
+ "@semantic-release/github",
81
+ [
82
+ "@semantic-release/exec",
83
+ {
84
+ "successCmd": "git restore ../../sdks/*/package.json ../../yarn.lock && [ -f ../../yarn.lock.bak ] && mv ../../yarn.lock.bak ../../yarn.lock || true; yarn",
85
+ "failCmd": "git restore ../../sdks/*/package.json ../../yarn.lock && [ -f ../../yarn.lock.bak ] && mv ../../yarn.lock.bak ../../yarn.lock || true; yarn",
86
+ "execCwd": "../.."
87
+ }
88
+ ]
89
+ ]
90
+ },
91
+ "version": "0.1.0"
92
+ }