@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.
- package/LICENSE +21 -0
- package/README.md +12 -0
- package/dist/cjs/abis/Permit2.json +830 -0
- package/dist/cjs/src/allowanceTransfer.d.ts +36 -0
- package/dist/cjs/src/allowanceTransfer.js +72 -0
- package/dist/cjs/src/allowanceTransfer.js.map +1 -0
- package/dist/cjs/src/allowanceTransfer.test.d.ts +1 -0
- package/dist/cjs/src/allowanceTransfer.test.js +95 -0
- package/dist/cjs/src/allowanceTransfer.test.js.map +1 -0
- package/dist/cjs/src/constants.d.ts +13 -0
- package/dist/cjs/src/constants.js +29 -0
- package/dist/cjs/src/constants.js.map +1 -0
- package/dist/cjs/src/constants.test.d.ts +1 -0
- package/dist/cjs/src/constants.test.js +19 -0
- package/dist/cjs/src/constants.test.js.map +1 -0
- package/dist/cjs/src/domain.d.ts +7 -0
- package/dist/cjs/src/domain.js +13 -0
- package/dist/cjs/src/domain.js.map +1 -0
- package/dist/cjs/src/index.d.ts +4 -0
- package/dist/cjs/src/index.js +8 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/providers/AllowanceProvider.d.ts +17 -0
- package/dist/cjs/src/providers/AllowanceProvider.js +35 -0
- package/dist/cjs/src/providers/AllowanceProvider.js.map +1 -0
- package/dist/cjs/src/providers/SignatureProvider.d.ts +74 -0
- package/dist/cjs/src/providers/SignatureProvider.js +146 -0
- package/dist/cjs/src/providers/SignatureProvider.js.map +1 -0
- package/dist/cjs/src/providers/SignatureProvider.test.d.ts +1 -0
- package/dist/cjs/src/providers/SignatureProvider.test.js +247 -0
- package/dist/cjs/src/providers/SignatureProvider.test.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts +2 -0
- package/dist/cjs/src/providers/index.js +6 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/src/signatureTransfer.d.ts +41 -0
- package/dist/cjs/src/signatureTransfer.js +93 -0
- package/dist/cjs/src/signatureTransfer.js.map +1 -0
- package/dist/cjs/src/signatureTransfer.test.d.ts +1 -0
- package/dist/cjs/src/signatureTransfer.test.js +109 -0
- package/dist/cjs/src/signatureTransfer.test.js.map +1 -0
- package/dist/esm/abis/Permit2.json +830 -0
- package/dist/esm/src/allowanceTransfer.d.ts +36 -0
- package/dist/esm/src/allowanceTransfer.js +67 -0
- package/dist/esm/src/allowanceTransfer.js.map +1 -0
- package/dist/esm/src/allowanceTransfer.test.d.ts +1 -0
- package/dist/esm/src/allowanceTransfer.test.js +93 -0
- package/dist/esm/src/allowanceTransfer.test.js.map +1 -0
- package/dist/esm/src/constants.d.ts +13 -0
- package/dist/esm/src/constants.js +25 -0
- package/dist/esm/src/constants.js.map +1 -0
- package/dist/esm/src/constants.test.d.ts +1 -0
- package/dist/esm/src/constants.test.js +17 -0
- package/dist/esm/src/constants.test.js.map +1 -0
- package/dist/esm/src/domain.d.ts +7 -0
- package/dist/esm/src/domain.js +9 -0
- package/dist/esm/src/domain.js.map +1 -0
- package/dist/esm/src/index.d.ts +4 -0
- package/dist/esm/src/index.js +5 -0
- package/dist/esm/src/index.js.map +1 -0
- package/dist/esm/src/providers/AllowanceProvider.d.ts +17 -0
- package/dist/esm/src/providers/AllowanceProvider.js +31 -0
- package/dist/esm/src/providers/AllowanceProvider.js.map +1 -0
- package/dist/esm/src/providers/SignatureProvider.d.ts +74 -0
- package/dist/esm/src/providers/SignatureProvider.js +142 -0
- package/dist/esm/src/providers/SignatureProvider.js.map +1 -0
- package/dist/esm/src/providers/SignatureProvider.test.d.ts +1 -0
- package/dist/esm/src/providers/SignatureProvider.test.js +245 -0
- package/dist/esm/src/providers/SignatureProvider.test.js.map +1 -0
- package/dist/esm/src/providers/index.d.ts +2 -0
- package/dist/esm/src/providers/index.js +3 -0
- package/dist/esm/src/providers/index.js.map +1 -0
- package/dist/esm/src/signatureTransfer.d.ts +41 -0
- package/dist/esm/src/signatureTransfer.js +88 -0
- package/dist/esm/src/signatureTransfer.js.map +1 -0
- package/dist/esm/src/signatureTransfer.test.d.ts +1 -0
- package/dist/esm/src/signatureTransfer.test.js +107 -0
- package/dist/esm/src/signatureTransfer.test.js.map +1 -0
- package/dist/types/src/allowanceTransfer.d.ts +36 -0
- package/dist/types/src/allowanceTransfer.test.d.ts +1 -0
- package/dist/types/src/constants.d.ts +13 -0
- package/dist/types/src/constants.test.d.ts +1 -0
- package/dist/types/src/domain.d.ts +7 -0
- package/dist/types/src/index.d.ts +4 -0
- package/dist/types/src/providers/AllowanceProvider.d.ts +17 -0
- package/dist/types/src/providers/SignatureProvider.d.ts +74 -0
- package/dist/types/src/providers/SignatureProvider.test.d.ts +1 -0
- package/dist/types/src/providers/index.d.ts +2 -0
- package/dist/types/src/signatureTransfer.d.ts +41 -0
- package/dist/types/src/signatureTransfer.test.d.ts +1 -0
- 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 @@
|
|
|
1
|
+
export {};
|
|
@@ -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
|
+
}
|