@0xsequence/relayer 2.3.39 → 3.0.0-beta.10

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 (83) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +3926 -0
  3. package/LICENSE +0 -17
  4. package/README.md +1 -2
  5. package/dist/index.d.ts +4 -0
  6. package/dist/index.d.ts.map +1 -0
  7. package/dist/index.js +3 -0
  8. package/dist/preconditions/codec.d.ts +12 -0
  9. package/dist/preconditions/codec.d.ts.map +1 -0
  10. package/dist/preconditions/codec.js +125 -0
  11. package/dist/preconditions/index.d.ts +4 -0
  12. package/dist/preconditions/index.d.ts.map +1 -0
  13. package/dist/preconditions/index.js +3 -0
  14. package/dist/preconditions/selectors.d.ts +7 -0
  15. package/dist/preconditions/selectors.d.ts.map +1 -0
  16. package/dist/preconditions/selectors.js +27 -0
  17. package/dist/preconditions/types.d.ts +70 -0
  18. package/dist/preconditions/types.d.ts.map +1 -0
  19. package/dist/preconditions/types.js +203 -0
  20. package/dist/relayer/index.d.ts +45 -0
  21. package/dist/relayer/index.d.ts.map +1 -0
  22. package/dist/relayer/index.js +3 -0
  23. package/dist/relayer/relayer.d.ts +26 -0
  24. package/dist/relayer/relayer.d.ts.map +1 -0
  25. package/dist/relayer/relayer.js +7 -0
  26. package/dist/relayer/rpc-relayer/index.d.ts +38 -0
  27. package/dist/relayer/rpc-relayer/index.d.ts.map +1 -0
  28. package/dist/relayer/rpc-relayer/index.js +375 -0
  29. package/dist/{declarations/src → relayer}/rpc-relayer/relayer.gen.d.ts +3 -2
  30. package/dist/relayer/rpc-relayer/relayer.gen.d.ts.map +1 -0
  31. package/dist/relayer/rpc-relayer/relayer.gen.js +1246 -0
  32. package/dist/relayer/standard/abi.d.ts +73 -0
  33. package/dist/relayer/standard/abi.d.ts.map +1 -0
  34. package/dist/relayer/standard/abi.js +10 -0
  35. package/dist/relayer/standard/eip6963.d.ts +31 -0
  36. package/dist/relayer/standard/eip6963.d.ts.map +1 -0
  37. package/dist/relayer/standard/eip6963.js +51 -0
  38. package/dist/relayer/standard/index.d.ts +5 -0
  39. package/dist/relayer/standard/index.d.ts.map +1 -0
  40. package/dist/relayer/standard/index.js +4 -0
  41. package/dist/relayer/standard/local.d.ts +60 -0
  42. package/dist/relayer/standard/local.d.ts.map +1 -0
  43. package/dist/relayer/standard/local.js +285 -0
  44. package/dist/relayer/standard/pk-relayer.d.ts +28 -0
  45. package/dist/relayer/standard/pk-relayer.d.ts.map +1 -0
  46. package/dist/relayer/standard/pk-relayer.js +112 -0
  47. package/dist/relayer/standard/sequence.d.ts +27 -0
  48. package/dist/relayer/standard/sequence.d.ts.map +1 -0
  49. package/dist/relayer/standard/sequence.js +84 -0
  50. package/package.json +28 -25
  51. package/src/index.ts +3 -111
  52. package/src/preconditions/codec.ts +190 -0
  53. package/src/preconditions/index.ts +3 -0
  54. package/src/preconditions/selectors.ts +38 -0
  55. package/src/preconditions/types.ts +201 -0
  56. package/src/relayer/index.ts +60 -0
  57. package/src/relayer/relayer.ts +37 -0
  58. package/src/relayer/rpc-relayer/index.ts +449 -0
  59. package/src/{rpc-relayer → relayer/rpc-relayer}/relayer.gen.ts +483 -258
  60. package/src/relayer/standard/abi.ts +13 -0
  61. package/src/relayer/standard/eip6963.ts +74 -0
  62. package/src/relayer/standard/index.ts +4 -0
  63. package/src/relayer/standard/local.ts +353 -0
  64. package/src/relayer/standard/pk-relayer.ts +138 -0
  65. package/src/relayer/standard/sequence.ts +110 -0
  66. package/test/preconditions/codec.test.ts +531 -0
  67. package/test/preconditions/preconditions.test.ts +283 -0
  68. package/test/preconditions/selectors.test.ts +415 -0
  69. package/test/preconditions/types.test.ts +443 -0
  70. package/test/relayer/relayer.test.ts +355 -0
  71. package/tsconfig.json +10 -0
  72. package/dist/0xsequence-relayer.cjs.d.ts +0 -2
  73. package/dist/0xsequence-relayer.cjs.dev.js +0 -1865
  74. package/dist/0xsequence-relayer.cjs.js +0 -7
  75. package/dist/0xsequence-relayer.cjs.prod.js +0 -1865
  76. package/dist/0xsequence-relayer.esm.js +0 -1852
  77. package/dist/declarations/src/index.d.ts +0 -42
  78. package/dist/declarations/src/local-relayer.d.ts +0 -35
  79. package/dist/declarations/src/provider-relayer.d.ts +0 -47
  80. package/dist/declarations/src/rpc-relayer/index.d.ts +0 -72
  81. package/src/local-relayer.ts +0 -125
  82. package/src/provider-relayer.ts +0 -284
  83. package/src/rpc-relayer/index.ts +0 -380
package/LICENSE CHANGED
@@ -1,20 +1,3 @@
1
- Copyright (c) 2017-present Horizon Blockchain Games Inc.
2
-
3
- Licensed under the Apache License, Version 2.0 (the "License");
4
- you may not use this file except in compliance with the License.
5
- You may obtain a copy of the License at
6
-
7
- http://www.apache.org/licenses/LICENSE-2.0
8
-
9
- Unless required by applicable law or agreed to in writing, software
10
- distributed under the License is distributed on an "AS IS" BASIS,
11
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
- See the License for the specific language governing permissions and
13
- limitations under the License.
14
-
15
-
16
- ------------------------------------------------------------------------
17
-
18
1
 
19
2
  Apache License
20
3
  Version 2.0, January 2004
package/README.md CHANGED
@@ -1,4 +1,3 @@
1
- @0xsequence/relayer
2
- ===================
1
+ # @0xsequence/relayer
3
2
 
4
3
  See [0xsequence project page](https://github.com/0xsequence/sequence.js).
@@ -0,0 +1,4 @@
1
+ export * as Relayer from './relayer/index.js';
2
+ export * as RpcRelayerGen from './relayer/rpc-relayer/relayer.gen.js';
3
+ export * as Preconditions from './preconditions/index.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,oBAAoB,CAAA;AAC7C,OAAO,KAAK,aAAa,MAAM,sCAAsC,CAAA;AACrE,OAAO,KAAK,aAAa,MAAM,0BAA0B,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * as Relayer from './relayer/index.js';
2
+ export * as RpcRelayerGen from './relayer/rpc-relayer/relayer.gen.js';
3
+ export * as Preconditions from './preconditions/index.js';
@@ -0,0 +1,12 @@
1
+ import { Precondition } from './types.js';
2
+ export interface TransactionPrecondition {
3
+ type: string;
4
+ chainId: number;
5
+ ownerAddress: string;
6
+ tokenAddress: string;
7
+ minAmount: bigint;
8
+ }
9
+ export declare function decodePreconditions(preconditions: TransactionPrecondition[]): Precondition[];
10
+ export declare function decodePrecondition(p: TransactionPrecondition): Precondition | undefined;
11
+ export declare function encodePrecondition(p: Precondition): string;
12
+ //# sourceMappingURL=codec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec.d.ts","sourceRoot":"","sources":["../../src/preconditions/codec.ts"],"names":[],"mappings":"AACA,OAAO,EACL,YAAY,EAQb,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IACpB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,uBAAuB,EAAE,GAAG,YAAY,EAAE,CAW5F;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,uBAAuB,GAAG,YAAY,GAAG,SAAS,CAoFvF;AAED,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,CAsE1D"}
@@ -0,0 +1,125 @@
1
+ import { Address } from 'ox';
2
+ import { NativeBalancePrecondition, Erc20BalancePrecondition, Erc20ApprovalPrecondition, Erc721OwnershipPrecondition, Erc721ApprovalPrecondition, Erc1155BalancePrecondition, Erc1155ApprovalPrecondition, } from './types.js';
3
+ export function decodePreconditions(preconditions) {
4
+ const decodedPreconditions = [];
5
+ for (const p of preconditions) {
6
+ const decoded = decodePrecondition(p);
7
+ if (decoded) {
8
+ decodedPreconditions.push(decoded);
9
+ }
10
+ }
11
+ return decodedPreconditions;
12
+ }
13
+ export function decodePrecondition(p) {
14
+ if (!p) {
15
+ return undefined;
16
+ }
17
+ let precondition;
18
+ try {
19
+ switch (p.type) {
20
+ case 'native-balance':
21
+ precondition = new NativeBalancePrecondition(Address.from(p.ownerAddress), p.minAmount, undefined);
22
+ break;
23
+ case 'erc20-balance':
24
+ precondition = new Erc20BalancePrecondition(Address.from(p.ownerAddress), Address.from(p.tokenAddress), p.minAmount, undefined);
25
+ break;
26
+ case 'erc20-approval':
27
+ precondition = new Erc20ApprovalPrecondition(Address.from(p.ownerAddress), Address.from(p.tokenAddress), Address.from(p.ownerAddress), p.minAmount);
28
+ break;
29
+ case 'erc721-ownership':
30
+ precondition = new Erc721OwnershipPrecondition(Address.from(p.ownerAddress), Address.from(p.tokenAddress), BigInt(0), true);
31
+ break;
32
+ case 'erc721-approval':
33
+ precondition = new Erc721ApprovalPrecondition(Address.from(p.ownerAddress), Address.from(p.tokenAddress), BigInt(0), Address.from(p.ownerAddress));
34
+ break;
35
+ case 'erc1155-balance':
36
+ precondition = new Erc1155BalancePrecondition(Address.from(p.ownerAddress), Address.from(p.tokenAddress), BigInt(0), p.minAmount, undefined);
37
+ break;
38
+ case 'erc1155-approval':
39
+ precondition = new Erc1155ApprovalPrecondition(Address.from(p.ownerAddress), Address.from(p.tokenAddress), BigInt(0), Address.from(p.ownerAddress), p.minAmount);
40
+ break;
41
+ default:
42
+ return undefined;
43
+ }
44
+ const error = precondition.isValid();
45
+ if (error) {
46
+ console.warn(`Invalid precondition: ${error.message}`);
47
+ return undefined;
48
+ }
49
+ return precondition;
50
+ }
51
+ catch (e) {
52
+ console.warn(`Failed to decode precondition: ${e}`);
53
+ return undefined;
54
+ }
55
+ }
56
+ export function encodePrecondition(p) {
57
+ const data = {};
58
+ switch (p.type()) {
59
+ case 'native-balance': {
60
+ const native = p;
61
+ data.address = native.address.toString();
62
+ if (native.min !== undefined)
63
+ data.min = native.min.toString();
64
+ if (native.max !== undefined)
65
+ data.max = native.max.toString();
66
+ break;
67
+ }
68
+ case 'erc20-balance': {
69
+ const erc20 = p;
70
+ data.address = erc20.address.toString();
71
+ data.token = erc20.token.toString();
72
+ if (erc20.min !== undefined)
73
+ data.min = erc20.min.toString();
74
+ if (erc20.max !== undefined)
75
+ data.max = erc20.max.toString();
76
+ break;
77
+ }
78
+ case 'erc20-approval': {
79
+ const erc20 = p;
80
+ data.address = erc20.address.toString();
81
+ data.token = erc20.token.toString();
82
+ data.operator = erc20.operator.toString();
83
+ data.min = erc20.min.toString();
84
+ break;
85
+ }
86
+ case 'erc721-ownership': {
87
+ const erc721 = p;
88
+ data.address = erc721.address.toString();
89
+ data.token = erc721.token.toString();
90
+ data.tokenId = erc721.tokenId.toString();
91
+ if (erc721.owned !== undefined)
92
+ data.owned = erc721.owned;
93
+ break;
94
+ }
95
+ case 'erc721-approval': {
96
+ const erc721 = p;
97
+ data.address = erc721.address.toString();
98
+ data.token = erc721.token.toString();
99
+ data.tokenId = erc721.tokenId.toString();
100
+ data.operator = erc721.operator.toString();
101
+ break;
102
+ }
103
+ case 'erc1155-balance': {
104
+ const erc1155 = p;
105
+ data.address = erc1155.address.toString();
106
+ data.token = erc1155.token.toString();
107
+ data.tokenId = erc1155.tokenId.toString();
108
+ if (erc1155.min !== undefined)
109
+ data.min = erc1155.min.toString();
110
+ if (erc1155.max !== undefined)
111
+ data.max = erc1155.max.toString();
112
+ break;
113
+ }
114
+ case 'erc1155-approval': {
115
+ const erc1155 = p;
116
+ data.address = erc1155.address.toString();
117
+ data.token = erc1155.token.toString();
118
+ data.tokenId = erc1155.tokenId.toString();
119
+ data.operator = erc1155.operator.toString();
120
+ data.min = erc1155.min.toString();
121
+ break;
122
+ }
123
+ }
124
+ return JSON.stringify(data);
125
+ }
@@ -0,0 +1,4 @@
1
+ export * from './types.js';
2
+ export * from './codec.js';
3
+ export * from './selectors.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/preconditions/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAA;AAC1B,cAAc,YAAY,CAAA;AAC1B,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './types.js';
2
+ export * from './codec.js';
3
+ export * from './selectors.js';
@@ -0,0 +1,7 @@
1
+ import { Precondition, NativeBalancePrecondition, Erc20BalancePrecondition } from './types.js';
2
+ import { TransactionPrecondition } from './codec.js';
3
+ export declare function extractChainID(precondition: TransactionPrecondition): number | undefined;
4
+ export declare function extractSupportedPreconditions(preconditions: TransactionPrecondition[]): Precondition[];
5
+ export declare function extractNativeBalancePreconditions(preconditions: TransactionPrecondition[]): NativeBalancePrecondition[];
6
+ export declare function extractERC20BalancePreconditions(preconditions: TransactionPrecondition[]): Erc20BalancePrecondition[];
7
+ //# sourceMappingURL=selectors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selectors.d.ts","sourceRoot":"","sources":["../../src/preconditions/selectors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAC9F,OAAO,EAAE,uBAAuB,EAAuB,MAAM,YAAY,CAAA;AAEzE,wBAAgB,cAAc,CAAC,YAAY,EAAE,uBAAuB,GAAG,MAAM,GAAG,SAAS,CAMxF;AAED,wBAAgB,6BAA6B,CAAC,aAAa,EAAE,uBAAuB,EAAE,GAAG,YAAY,EAAE,CAMtG;AAED,wBAAgB,iCAAiC,CAC/C,aAAa,EAAE,uBAAuB,EAAE,GACvC,yBAAyB,EAAE,CAO7B;AAED,wBAAgB,gCAAgC,CAAC,aAAa,EAAE,uBAAuB,EAAE,GAAG,wBAAwB,EAAE,CAOrH"}
@@ -0,0 +1,27 @@
1
+ import { decodePreconditions } from './codec.js';
2
+ export function extractChainID(precondition) {
3
+ if (!precondition) {
4
+ return undefined;
5
+ }
6
+ return precondition.chainId;
7
+ }
8
+ export function extractSupportedPreconditions(preconditions) {
9
+ if (!preconditions || preconditions.length === 0) {
10
+ return [];
11
+ }
12
+ return decodePreconditions(preconditions);
13
+ }
14
+ export function extractNativeBalancePreconditions(preconditions) {
15
+ if (!preconditions || preconditions.length === 0) {
16
+ return [];
17
+ }
18
+ const decoded = decodePreconditions(preconditions);
19
+ return decoded.filter((p) => p.type() === 'native-balance');
20
+ }
21
+ export function extractERC20BalancePreconditions(preconditions) {
22
+ if (!preconditions || preconditions.length === 0) {
23
+ return [];
24
+ }
25
+ const decoded = decodePreconditions(preconditions);
26
+ return decoded.filter((p) => p.type() === 'erc20-balance');
27
+ }
@@ -0,0 +1,70 @@
1
+ import { Address } from 'ox';
2
+ export interface Precondition {
3
+ type(): string;
4
+ isValid(): Error | undefined;
5
+ }
6
+ export declare class NativeBalancePrecondition implements Precondition {
7
+ readonly address: Address.Address;
8
+ readonly min?: bigint | undefined;
9
+ readonly max?: bigint | undefined;
10
+ constructor(address: Address.Address, min?: bigint | undefined, max?: bigint | undefined);
11
+ type(): string;
12
+ isValid(): Error | undefined;
13
+ }
14
+ export declare class Erc20BalancePrecondition implements Precondition {
15
+ readonly address: Address.Address;
16
+ readonly token: Address.Address;
17
+ readonly min?: bigint | undefined;
18
+ readonly max?: bigint | undefined;
19
+ constructor(address: Address.Address, token: Address.Address, min?: bigint | undefined, max?: bigint | undefined);
20
+ type(): string;
21
+ isValid(): Error | undefined;
22
+ }
23
+ export declare class Erc20ApprovalPrecondition implements Precondition {
24
+ readonly address: Address.Address;
25
+ readonly token: Address.Address;
26
+ readonly operator: Address.Address;
27
+ readonly min: bigint;
28
+ constructor(address: Address.Address, token: Address.Address, operator: Address.Address, min: bigint);
29
+ type(): string;
30
+ isValid(): Error | undefined;
31
+ }
32
+ export declare class Erc721OwnershipPrecondition implements Precondition {
33
+ readonly address: Address.Address;
34
+ readonly token: Address.Address;
35
+ readonly tokenId: bigint;
36
+ readonly owned?: boolean | undefined;
37
+ constructor(address: Address.Address, token: Address.Address, tokenId: bigint, owned?: boolean | undefined);
38
+ type(): string;
39
+ isValid(): Error | undefined;
40
+ }
41
+ export declare class Erc721ApprovalPrecondition implements Precondition {
42
+ readonly address: Address.Address;
43
+ readonly token: Address.Address;
44
+ readonly tokenId: bigint;
45
+ readonly operator: Address.Address;
46
+ constructor(address: Address.Address, token: Address.Address, tokenId: bigint, operator: Address.Address);
47
+ type(): string;
48
+ isValid(): Error | undefined;
49
+ }
50
+ export declare class Erc1155BalancePrecondition implements Precondition {
51
+ readonly address: Address.Address;
52
+ readonly token: Address.Address;
53
+ readonly tokenId: bigint;
54
+ readonly min?: bigint | undefined;
55
+ readonly max?: bigint | undefined;
56
+ constructor(address: Address.Address, token: Address.Address, tokenId: bigint, min?: bigint | undefined, max?: bigint | undefined);
57
+ type(): string;
58
+ isValid(): Error | undefined;
59
+ }
60
+ export declare class Erc1155ApprovalPrecondition implements Precondition {
61
+ readonly address: Address.Address;
62
+ readonly token: Address.Address;
63
+ readonly tokenId: bigint;
64
+ readonly operator: Address.Address;
65
+ readonly min: bigint;
66
+ constructor(address: Address.Address, token: Address.Address, tokenId: bigint, operator: Address.Address, min: bigint);
67
+ type(): string;
68
+ isValid(): Error | undefined;
69
+ }
70
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/preconditions/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,203 @@
1
+ export class NativeBalancePrecondition {
2
+ address;
3
+ min;
4
+ max;
5
+ constructor(address, min, max) {
6
+ this.address = address;
7
+ this.min = min;
8
+ this.max = max;
9
+ }
10
+ type() {
11
+ return 'native-balance';
12
+ }
13
+ isValid() {
14
+ if (!this.address) {
15
+ return new Error('address is required');
16
+ }
17
+ if (this.min !== undefined && this.max !== undefined && this.min > this.max) {
18
+ return new Error('min balance cannot be greater than max balance');
19
+ }
20
+ return undefined;
21
+ }
22
+ }
23
+ export class Erc20BalancePrecondition {
24
+ address;
25
+ token;
26
+ min;
27
+ max;
28
+ constructor(address, token, min, max) {
29
+ this.address = address;
30
+ this.token = token;
31
+ this.min = min;
32
+ this.max = max;
33
+ }
34
+ type() {
35
+ return 'erc20-balance';
36
+ }
37
+ isValid() {
38
+ if (!this.address) {
39
+ return new Error('address is required');
40
+ }
41
+ if (!this.token) {
42
+ return new Error('token address is required');
43
+ }
44
+ if (this.min !== undefined && this.max !== undefined && this.min > this.max) {
45
+ return new Error('min balance cannot be greater than max balance');
46
+ }
47
+ return undefined;
48
+ }
49
+ }
50
+ export class Erc20ApprovalPrecondition {
51
+ address;
52
+ token;
53
+ operator;
54
+ min;
55
+ constructor(address, token, operator, min) {
56
+ this.address = address;
57
+ this.token = token;
58
+ this.operator = operator;
59
+ this.min = min;
60
+ }
61
+ type() {
62
+ return 'erc20-approval';
63
+ }
64
+ isValid() {
65
+ if (!this.address) {
66
+ return new Error('address is required');
67
+ }
68
+ if (!this.token) {
69
+ return new Error('token address is required');
70
+ }
71
+ if (!this.operator) {
72
+ return new Error('operator address is required');
73
+ }
74
+ if (this.min === undefined) {
75
+ return new Error('min approval amount is required');
76
+ }
77
+ return undefined;
78
+ }
79
+ }
80
+ export class Erc721OwnershipPrecondition {
81
+ address;
82
+ token;
83
+ tokenId;
84
+ owned;
85
+ constructor(address, token, tokenId, owned) {
86
+ this.address = address;
87
+ this.token = token;
88
+ this.tokenId = tokenId;
89
+ this.owned = owned;
90
+ }
91
+ type() {
92
+ return 'erc721-ownership';
93
+ }
94
+ isValid() {
95
+ if (!this.address) {
96
+ return new Error('address is required');
97
+ }
98
+ if (!this.token) {
99
+ return new Error('token address is required');
100
+ }
101
+ if (this.tokenId === undefined) {
102
+ return new Error('tokenId is required');
103
+ }
104
+ return undefined;
105
+ }
106
+ }
107
+ export class Erc721ApprovalPrecondition {
108
+ address;
109
+ token;
110
+ tokenId;
111
+ operator;
112
+ constructor(address, token, tokenId, operator) {
113
+ this.address = address;
114
+ this.token = token;
115
+ this.tokenId = tokenId;
116
+ this.operator = operator;
117
+ }
118
+ type() {
119
+ return 'erc721-approval';
120
+ }
121
+ isValid() {
122
+ if (!this.address) {
123
+ return new Error('address is required');
124
+ }
125
+ if (!this.token) {
126
+ return new Error('token address is required');
127
+ }
128
+ if (this.tokenId === undefined) {
129
+ return new Error('tokenId is required');
130
+ }
131
+ if (!this.operator) {
132
+ return new Error('operator address is required');
133
+ }
134
+ return undefined;
135
+ }
136
+ }
137
+ export class Erc1155BalancePrecondition {
138
+ address;
139
+ token;
140
+ tokenId;
141
+ min;
142
+ max;
143
+ constructor(address, token, tokenId, min, max) {
144
+ this.address = address;
145
+ this.token = token;
146
+ this.tokenId = tokenId;
147
+ this.min = min;
148
+ this.max = max;
149
+ }
150
+ type() {
151
+ return 'erc1155-balance';
152
+ }
153
+ isValid() {
154
+ if (!this.address) {
155
+ return new Error('address is required');
156
+ }
157
+ if (!this.token) {
158
+ return new Error('token address is required');
159
+ }
160
+ if (this.tokenId === undefined) {
161
+ return new Error('tokenId is required');
162
+ }
163
+ if (this.min !== undefined && this.max !== undefined && this.min > this.max) {
164
+ return new Error('min balance cannot be greater than max balance');
165
+ }
166
+ return undefined;
167
+ }
168
+ }
169
+ export class Erc1155ApprovalPrecondition {
170
+ address;
171
+ token;
172
+ tokenId;
173
+ operator;
174
+ min;
175
+ constructor(address, token, tokenId, operator, min) {
176
+ this.address = address;
177
+ this.token = token;
178
+ this.tokenId = tokenId;
179
+ this.operator = operator;
180
+ this.min = min;
181
+ }
182
+ type() {
183
+ return 'erc1155-approval';
184
+ }
185
+ isValid() {
186
+ if (!this.address) {
187
+ return new Error('address is required');
188
+ }
189
+ if (!this.token) {
190
+ return new Error('token address is required');
191
+ }
192
+ if (this.tokenId === undefined) {
193
+ return new Error('tokenId is required');
194
+ }
195
+ if (!this.operator) {
196
+ return new Error('operator address is required');
197
+ }
198
+ if (this.min === undefined) {
199
+ return new Error('min approval amount is required');
200
+ }
201
+ return undefined;
202
+ }
203
+ }
@@ -0,0 +1,45 @@
1
+ import { Hex } from 'ox';
2
+ import type { FeeToken, GetMetaTxnReceiptReturn } from './rpc-relayer/relayer.gen.js';
3
+ export * from './rpc-relayer/index.js';
4
+ export * from './standard/index.js';
5
+ export * from './relayer.js';
6
+ export type { FeeToken } from './rpc-relayer/relayer.gen.js';
7
+ export interface FeeOption {
8
+ token: FeeToken;
9
+ to: string;
10
+ value: string;
11
+ gasLimit: number;
12
+ }
13
+ export interface FeeQuote {
14
+ _tag: 'FeeQuote';
15
+ _quote: unknown;
16
+ }
17
+ export type OperationUnknownStatus = {
18
+ status: 'unknown';
19
+ reason?: string;
20
+ };
21
+ export type OperationQueuedStatus = {
22
+ status: 'queued';
23
+ reason?: string;
24
+ };
25
+ export type OperationPendingStatus = {
26
+ status: 'pending';
27
+ reason?: string;
28
+ };
29
+ export type OperationPendingPreconditionStatus = {
30
+ status: 'pending-precondition';
31
+ reason?: string;
32
+ };
33
+ export type OperationConfirmedStatus = {
34
+ status: 'confirmed';
35
+ transactionHash: Hex.Hex;
36
+ data?: GetMetaTxnReceiptReturn;
37
+ };
38
+ export type OperationFailedStatus = {
39
+ status: 'failed';
40
+ transactionHash?: Hex.Hex;
41
+ reason: string;
42
+ data?: GetMetaTxnReceiptReturn;
43
+ };
44
+ export type OperationStatus = OperationUnknownStatus | OperationQueuedStatus | OperationPendingStatus | OperationPendingPreconditionStatus | OperationConfirmedStatus | OperationFailedStatus;
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/relayer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAA;AAErF,cAAc,wBAAwB,CAAA;AACtC,cAAc,qBAAqB,CAAA;AACnC,cAAc,cAAc,CAAA;AAC5B,YAAY,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AAE5D,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,QAAQ,CAAA;IACf,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,UAAU,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,QAAQ,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,sBAAsB,GAAG;IACnC,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,kCAAkC,GAAG;IAC/C,MAAM,EAAE,sBAAsB,CAAA;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,EAAE,WAAW,CAAA;IACnB,eAAe,EAAE,GAAG,CAAC,GAAG,CAAA;IACxB,IAAI,CAAC,EAAE,uBAAuB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,qBAAqB,GAAG;IAClC,MAAM,EAAE,QAAQ,CAAA;IAChB,eAAe,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACzB,MAAM,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,uBAAuB,CAAA;CAC/B,CAAA;AAED,MAAM,MAAM,eAAe,GACvB,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,kCAAkC,GAClC,wBAAwB,GACxB,qBAAqB,CAAA"}
@@ -0,0 +1,3 @@
1
+ export * from './rpc-relayer/index.js';
2
+ export * from './standard/index.js';
3
+ export * from './relayer.js';
@@ -0,0 +1,26 @@
1
+ import { Address, Hex } from 'ox';
2
+ import { FeeToken } from './rpc-relayer/relayer.gen.js';
3
+ import { FeeOption, FeeQuote, OperationStatus } from './index.js';
4
+ import { Payload, Precondition } from '@0xsequence/wallet-primitives';
5
+ export interface Relayer {
6
+ kind: 'relayer';
7
+ type: string;
8
+ id: string;
9
+ isAvailable(wallet: Address.Address, chainId: number): Promise<boolean>;
10
+ feeTokens(): Promise<{
11
+ isFeeRequired: boolean;
12
+ tokens?: FeeToken[];
13
+ paymentAddress?: Address.Address;
14
+ }>;
15
+ feeOptions(wallet: Address.Address, chainId: number, calls: Payload.Call[]): Promise<{
16
+ options: FeeOption[];
17
+ quote?: FeeQuote;
18
+ }>;
19
+ relay(to: Address.Address, data: Hex.Hex, chainId: number, quote?: FeeQuote): Promise<{
20
+ opHash: Hex.Hex;
21
+ }>;
22
+ status(opHash: Hex.Hex, chainId: number): Promise<OperationStatus>;
23
+ checkPrecondition(precondition: Precondition.Precondition): Promise<boolean>;
24
+ }
25
+ export declare function isRelayer(relayer: any): relayer is Relayer;
26
+ //# sourceMappingURL=relayer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"relayer.d.ts","sourceRoot":"","sources":["../../src/relayer/relayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,IAAI,CAAA;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAErE,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,SAAS,CAAA;IAEf,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IAEV,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;IAEvE,SAAS,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO,CAAA;KAAE,CAAC,CAAA;IAEvG,UAAU,CACR,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC,CAAA;IAEtD,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAA;KAAE,CAAC,CAAA;IAE1G,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAA;IAElE,iBAAiB,CAAC,YAAY,EAAE,YAAY,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;CAC7E;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,IAAI,OAAO,CAQ1D"}
@@ -0,0 +1,7 @@
1
+ export function isRelayer(relayer) {
2
+ return ('isAvailable' in relayer &&
3
+ 'feeOptions' in relayer &&
4
+ 'relay' in relayer &&
5
+ 'status' in relayer &&
6
+ 'checkPrecondition' in relayer);
7
+ }
@@ -0,0 +1,38 @@
1
+ import { FeeToken as RpcFeeToken, TransactionPrecondition } from './relayer.gen.js';
2
+ import { Address, Hex } from 'ox';
3
+ import { Payload } from '@0xsequence/wallet-primitives';
4
+ import { FeeOption, FeeQuote, OperationStatus, Relayer } from '../index.js';
5
+ import { Chain } from 'viem';
6
+ export type Fetch = (input: RequestInfo, init?: RequestInit) => Promise<Response>;
7
+ export declare const getChain: (chainId: number) => Chain;
8
+ export declare class RpcRelayer implements Relayer {
9
+ readonly kind: 'relayer';
10
+ readonly type = "rpc";
11
+ readonly id: string;
12
+ readonly chainId: number;
13
+ private client;
14
+ private fetch;
15
+ private provider;
16
+ private readonly projectAccessKey?;
17
+ constructor(hostname: string, chainId: number, rpcUrl: string, fetchImpl?: Fetch, projectAccessKey?: string);
18
+ isAvailable(_wallet: Address.Address, chainId: number): Promise<boolean>;
19
+ feeTokens(): Promise<{
20
+ isFeeRequired: boolean;
21
+ tokens?: RpcFeeToken[];
22
+ paymentAddress?: Address.Address;
23
+ }>;
24
+ feeOptions(wallet: Address.Address, chainId: number, calls: Payload.Call[]): Promise<{
25
+ options: FeeOption[];
26
+ quote?: FeeQuote;
27
+ }>;
28
+ sendMetaTxn(walletAddress: Address.Address, to: Address.Address, data: Hex.Hex, chainId: number, quote?: FeeQuote, preconditions?: TransactionPrecondition[]): Promise<{
29
+ opHash: Hex.Hex;
30
+ }>;
31
+ relay(to: Address.Address, data: Hex.Hex, chainId: number, quote?: FeeQuote, preconditions?: TransactionPrecondition[]): Promise<{
32
+ opHash: Hex.Hex;
33
+ }>;
34
+ status(opHash: Hex.Hex, chainId: number): Promise<OperationStatus>;
35
+ checkPrecondition(precondition: TransactionPrecondition): Promise<boolean>;
36
+ private mapRpcFeeTokenToAddress;
37
+ }
38
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/relayer/rpc-relayer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,QAAQ,IAAI,WAAW,EACvB,uBAAuB,EAExB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,OAAO,EAAE,GAAG,EAAsB,MAAM,IAAI,CAAA;AACrD,OAAO,EAAa,OAAO,EAAW,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAU3E,OAAO,EAA0C,KAAK,EAAE,MAAM,MAAM,CAAA;AAGpE,MAAM,MAAM,KAAK,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAqCjF,eAAO,MAAM,QAAQ,GAAI,SAAS,MAAM,KAAG,KAc1C,CAAA;AAED,qBAAa,UAAW,YAAW,OAAO;IACxC,SAAgB,IAAI,EAAE,SAAS,CAAY;IAC3C,SAAgB,IAAI,SAAQ;IAC5B,SAAgB,EAAE,EAAE,MAAM,CAAA;IAC1B,SAAgB,OAAO,EAAE,MAAM,CAAA;IAC/B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,KAAK,CAAO;IACpB,OAAO,CAAC,QAAQ,CAAc;IAC9B,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAQ;gBAE9B,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM;IAqB3G,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,SAAS,IAAI,OAAO,CAAC;QAAE,aAAa,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,EAAE,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC,OAAO,CAAA;KAAE,CAAC;IAqB1G,UAAU,CACd,MAAM,EAAE,OAAO,CAAC,OAAO,EACvB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,GACpB,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAAC,KAAK,CAAC,EAAE,QAAQ,CAAA;KAAE,CAAC;IAgChD,WAAW,CACf,aAAa,EAAE,OAAO,CAAC,OAAO,EAC9B,EAAE,EAAE,OAAO,CAAC,OAAO,EACnB,IAAI,EAAE,GAAG,CAAC,GAAG,EACb,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,EAChB,aAAa,CAAC,EAAE,uBAAuB,EAAE,GACxC,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAA;KAAE,CAAC;IAyBzB,KAAK,CACT,EAAE,EAAE,OAAO,CAAC,OAAO,EACnB,IAAI,EAAE,GAAG,CAAC,GAAG,EACb,OAAO,EAAE,MAAM,EACf,KAAK,CAAC,EAAE,QAAQ,EAChB,aAAa,CAAC,EAAE,uBAAuB,EAAE,GACxC,OAAO,CAAC;QAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAA;KAAE,CAAC;IAyBzB,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IA2ClE,iBAAiB,CAAC,YAAY,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAuKhF,OAAO,CAAC,uBAAuB;CAMhC"}