@safe-global/protocol-kit 0.1.1 → 1.0.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 (93) hide show
  1. package/LICENSE.md +9 -9
  2. package/README.md +1015 -984
  3. package/dist/src/Safe.d.ts +13 -52
  4. package/dist/src/Safe.js +168 -57
  5. package/dist/src/Safe.js.map +1 -1
  6. package/dist/src/adapters/ethers/EthersAdapter.d.ts +8 -8
  7. package/dist/src/adapters/ethers/EthersAdapter.js +23 -31
  8. package/dist/src/adapters/ethers/EthersAdapter.js.map +1 -1
  9. package/dist/src/adapters/ethers/contracts/CreateCall/CreateCallEthersContract.d.ts +1 -1
  10. package/dist/src/adapters/ethers/contracts/CreateCall/CreateCallEthersContract.js +1 -1
  11. package/dist/src/adapters/ethers/contracts/GnosisSafe/GnosisSafeContractEthers.d.ts +1 -1
  12. package/dist/src/adapters/ethers/contracts/GnosisSafe/GnosisSafeContractEthers.js +1 -1
  13. package/dist/src/adapters/ethers/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryEthersContract.d.ts +1 -1
  14. package/dist/src/adapters/ethers/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryEthersContract.js +1 -1
  15. package/dist/src/adapters/ethers/contracts/SignMessageLib/SignMessageLibEthersContract.d.ts +1 -1
  16. package/dist/src/adapters/ethers/contracts/SignMessageLib/SignMessageLibEthersContract.js +1 -1
  17. package/dist/src/adapters/ethers/utils/index.d.ts +8 -0
  18. package/dist/src/adapters/ethers/utils/index.js +15 -1
  19. package/dist/src/adapters/ethers/utils/index.js.map +1 -1
  20. package/dist/src/adapters/web3/Web3Adapter.d.ts +8 -8
  21. package/dist/src/adapters/web3/Web3Adapter.js +17 -9
  22. package/dist/src/adapters/web3/Web3Adapter.js.map +1 -1
  23. package/dist/src/adapters/web3/contracts/CreateCall/CreateCallWeb3Contract.d.ts +1 -1
  24. package/dist/src/adapters/web3/contracts/CreateCall/CreateCallWeb3Contract.js +1 -6
  25. package/dist/src/adapters/web3/contracts/CreateCall/CreateCallWeb3Contract.js.map +1 -1
  26. package/dist/src/adapters/web3/contracts/GnosisSafe/GnosisSafeContractWeb3.d.ts +1 -1
  27. package/dist/src/adapters/web3/contracts/GnosisSafe/GnosisSafeContractWeb3.js +1 -6
  28. package/dist/src/adapters/web3/contracts/GnosisSafe/GnosisSafeContractWeb3.js.map +1 -1
  29. package/dist/src/adapters/web3/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryWeb3Contract.d.ts +1 -1
  30. package/dist/src/adapters/web3/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryWeb3Contract.js +1 -6
  31. package/dist/src/adapters/web3/contracts/GnosisSafeProxyFactory/GnosisSafeProxyFactoryWeb3Contract.js.map +1 -1
  32. package/dist/src/adapters/web3/contracts/SignMessageLib/SignMessageLibWeb3Contract.d.ts +1 -1
  33. package/dist/src/adapters/web3/contracts/SignMessageLib/SignMessageLibWeb3Contract.js +1 -6
  34. package/dist/src/adapters/web3/contracts/SignMessageLib/SignMessageLibWeb3Contract.js.map +1 -1
  35. package/dist/src/contracts/safeDeploymentContracts.d.ts +8 -9
  36. package/dist/src/contracts/safeDeploymentContracts.js +15 -15
  37. package/dist/src/contracts/safeDeploymentContracts.js.map +1 -1
  38. package/dist/src/contracts/utils.d.ts +21 -0
  39. package/dist/src/contracts/utils.js +105 -0
  40. package/dist/src/contracts/utils.js.map +1 -0
  41. package/dist/src/index.d.ts +8 -6
  42. package/dist/src/index.js +27 -20
  43. package/dist/src/index.js.map +1 -1
  44. package/dist/src/managers/contractManager.d.ts +4 -5
  45. package/dist/src/managers/contractManager.js +27 -22
  46. package/dist/src/managers/contractManager.js.map +1 -1
  47. package/dist/src/managers/fallbackHandlerManager.d.ts +1 -1
  48. package/dist/src/managers/fallbackHandlerManager.js +9 -0
  49. package/dist/src/managers/fallbackHandlerManager.js.map +1 -1
  50. package/dist/src/managers/guardManager.d.ts +1 -1
  51. package/dist/src/managers/guardManager.js +9 -0
  52. package/dist/src/managers/guardManager.js.map +1 -1
  53. package/dist/src/managers/moduleManager.d.ts +1 -1
  54. package/dist/src/managers/moduleManager.js +12 -0
  55. package/dist/src/managers/moduleManager.js.map +1 -1
  56. package/dist/src/managers/ownerManager.d.ts +1 -1
  57. package/dist/src/managers/ownerManager.js +21 -0
  58. package/dist/src/managers/ownerManager.js.map +1 -1
  59. package/dist/src/safeFactory/index.d.ts +5 -23
  60. package/dist/src/safeFactory/index.js +23 -63
  61. package/dist/src/safeFactory/index.js.map +1 -1
  62. package/dist/src/types/index.d.ts +114 -0
  63. package/dist/src/utils/eip-3770/config.js +11 -0
  64. package/dist/src/utils/eip-3770/config.js.map +1 -1
  65. package/dist/src/utils/index.d.ts +2 -1
  66. package/dist/src/utils/index.js +2 -1
  67. package/dist/src/utils/index.js.map +1 -1
  68. package/dist/src/utils/safeVersions.d.ts +2 -1
  69. package/dist/src/utils/safeVersions.js +3 -1
  70. package/dist/src/utils/safeVersions.js.map +1 -1
  71. package/dist/src/utils/signatures/SafeSignature.d.ts +1 -2
  72. package/dist/src/utils/signatures/SafeSignature.js +3 -2
  73. package/dist/src/utils/signatures/SafeSignature.js.map +1 -1
  74. package/dist/src/utils/signatures/index.d.ts +2 -12
  75. package/dist/src/utils/signatures/index.js +15 -90
  76. package/dist/src/utils/signatures/index.js.map +1 -1
  77. package/dist/src/utils/signatures/utils.d.ts +11 -0
  78. package/dist/src/utils/signatures/utils.js +91 -0
  79. package/dist/src/utils/signatures/utils.js.map +1 -0
  80. package/dist/src/utils/transactions/gas.d.ts +1 -1
  81. package/dist/src/utils/transactions/gas.js +10 -10
  82. package/dist/src/utils/transactions/gas.js.map +1 -1
  83. package/dist/src/utils/transactions/utils.d.ts +3 -2
  84. package/dist/src/utils/transactions/utils.js +26 -13
  85. package/dist/src/utils/transactions/utils.js.map +1 -1
  86. package/dist/src/utils/types.d.ts +2 -0
  87. package/dist/src/utils/types.js +8 -0
  88. package/dist/src/utils/types.js.map +1 -0
  89. package/dist/tsconfig.build.tsbuildinfo +1 -1
  90. package/package.json +91 -90
  91. package/dist/src/safeFactory/utils.d.ts +0 -3
  92. package/dist/src/safeFactory/utils.js +0 -19
  93. package/dist/src/safeFactory/utils.js.map +0 -1
@@ -1,4 +1,24 @@
1
+ import { SafeTransactionOptionalProps } from '../utils/transactions';
2
+ import { EthAdapter, GnosisSafeContract, MetaTransactionData, SafeTransactionDataPartial, SafeVersion } from '@safe-global/safe-core-sdk-types';
1
3
  import { AbiItem } from 'web3-utils';
4
+ export interface SafeAccountConfig {
5
+ owners: string[];
6
+ threshold: number;
7
+ to?: string;
8
+ data?: string;
9
+ fallbackHandler?: string;
10
+ paymentToken?: string;
11
+ payment?: number;
12
+ paymentReceiver?: string;
13
+ }
14
+ export interface SafeDeploymentConfig {
15
+ saltNonce?: string;
16
+ safeVersion?: SafeVersion;
17
+ }
18
+ export interface PredictedSafeProps {
19
+ safeAccountConfig: SafeAccountConfig;
20
+ safeDeploymentConfig: SafeDeploymentConfig;
21
+ }
2
22
  export interface ContractNetworkConfig {
3
23
  /** safeMasterCopyAddress - Address of the GnosisSafe Master Copy contract deployed on a specific network */
4
24
  safeMasterCopyAddress: string;
@@ -33,3 +53,97 @@ export interface ContractNetworksConfig {
33
53
  /** id - Network id */
34
54
  [id: string]: ContractNetworkConfig;
35
55
  }
56
+ type SafeConfigWithSafeAddressProps = {
57
+ /** safeAddress - The address of the Safe account to use */
58
+ safeAddress: string;
59
+ /** predictedSafe - The configuration of the Safe that is not yet deployed */
60
+ predictedSafe?: never;
61
+ };
62
+ type SafeConfigWithPredictedSafeProps = {
63
+ /** safeAddress - The address of the Safe account to use */
64
+ safeAddress?: never;
65
+ /** predictedSafe - The configuration of the Safe that is not yet deployed */
66
+ predictedSafe: PredictedSafeProps;
67
+ };
68
+ export type SafeConfigProps = {
69
+ /** ethAdapter - Ethereum adapter */
70
+ ethAdapter: EthAdapter;
71
+ /** isL1SafeMasterCopy - Forces to use the GnosisSafe L1 version of the contract instead of the L2 version */
72
+ isL1SafeMasterCopy?: boolean;
73
+ /** contractNetworks - Contract network configuration */
74
+ contractNetworks?: ContractNetworksConfig;
75
+ };
76
+ export type SafeConfigWithSafeAddress = SafeConfigProps & SafeConfigWithSafeAddressProps;
77
+ export type SafeConfigWithPredictedSafe = SafeConfigProps & SafeConfigWithPredictedSafeProps;
78
+ export type SafeConfig = SafeConfigWithSafeAddress | SafeConfigWithPredictedSafe;
79
+ type ConnectSafeConfigWithSafeAddressProps = {
80
+ /** safeAddress - The address of the Safe account to use */
81
+ safeAddress?: string;
82
+ /** predictedSafe - The configuration of the Safe that is not yet deployed */
83
+ predictedSafe?: never;
84
+ };
85
+ type ConnectSafeConfigWithPredictedSafeProps = {
86
+ /** safeAddress - The address of the Safe account to use */
87
+ safeAddress?: never;
88
+ /** predictedSafe - The configuration of the Safe that is not yet deployed */
89
+ predictedSafe?: PredictedSafeProps;
90
+ };
91
+ type ConnectSafeConfigProps = {
92
+ /** ethAdapter - Ethereum adapter */
93
+ ethAdapter?: EthAdapter;
94
+ /** isL1SafeMasterCopy - Forces to use the GnosisSafe L1 version of the contract instead of the L2 version */
95
+ isL1SafeMasterCopy?: boolean;
96
+ /** contractNetworks - Contract network configuration */
97
+ contractNetworks?: ContractNetworksConfig;
98
+ };
99
+ export type ConnectSafeConfigWithSafeAddress = ConnectSafeConfigProps & ConnectSafeConfigWithSafeAddressProps;
100
+ export type ConnectSafeConfigWithPredictedSafe = ConnectSafeConfigProps & ConnectSafeConfigWithPredictedSafeProps;
101
+ export type ConnectSafeConfig = ConnectSafeConfigWithSafeAddress | ConnectSafeConfigWithPredictedSafe;
102
+ export interface CreateTransactionProps {
103
+ /** safeTransactionData - The transaction or transaction array to process */
104
+ safeTransactionData: SafeTransactionDataPartial | MetaTransactionData[];
105
+ /** options - The transaction array optional properties */
106
+ options?: SafeTransactionOptionalProps;
107
+ /** onlyCalls - Forces the execution of the transaction array with MultiSendCallOnly contract */
108
+ onlyCalls?: boolean;
109
+ }
110
+ export interface AddOwnerTxParams {
111
+ /** ownerAddress - The address of the new owner */
112
+ ownerAddress: string;
113
+ /** threshold - The new threshold */
114
+ threshold?: number;
115
+ }
116
+ export interface RemoveOwnerTxParams {
117
+ /** ownerAddress - The address of the owner that will be removed */
118
+ ownerAddress: string;
119
+ /** threshold - The new threshold */
120
+ threshold?: number;
121
+ }
122
+ export interface SwapOwnerTxParams {
123
+ /** oldOwnerAddress - The old owner address */
124
+ oldOwnerAddress: string;
125
+ /** newOwnerAddress - The new owner address */
126
+ newOwnerAddress: string;
127
+ }
128
+ type StandardizeSafeTxDataWithSafeContractProps = {
129
+ /** safeContract - The Safe contract to use */
130
+ safeContract: GnosisSafeContract;
131
+ /** predictedSafe - The configuration of the Safe that is not yet deployed */
132
+ predictedSafe?: never;
133
+ };
134
+ type StandardizeSafeTxDataWithPredictedSafeProps = {
135
+ /** safeContract - The Safe contract to use */
136
+ safeContract?: never;
137
+ /** predictedSafe - The configuration of the Safe that is not yet deployed */
138
+ predictedSafe: PredictedSafeProps;
139
+ };
140
+ interface StandardizeSafeTransactionData {
141
+ /** ethAdapter - Ethereum adapter */
142
+ ethAdapter: EthAdapter;
143
+ /** tx - Safe transaction */
144
+ tx: SafeTransactionDataPartial;
145
+ }
146
+ export type StandardizeSafeTxDataWithSafeContract = StandardizeSafeTransactionData & StandardizeSafeTxDataWithSafeContractProps;
147
+ export type StandardizeSafeTxDataWithPredictedSafe = StandardizeSafeTransactionData & StandardizeSafeTxDataWithPredictedSafeProps;
148
+ export type StandardizeSafeTransactionDataProps = StandardizeSafeTxDataWithSafeContract | StandardizeSafeTxDataWithPredictedSafe;
149
+ export {};
@@ -10,8 +10,10 @@ exports.networks = [
10
10
  { chainId: 10, shortName: 'oeth' },
11
11
  { chainId: 11, shortName: 'meta' },
12
12
  { chainId: 12, shortName: 'kal' },
13
+ { chainId: 18, shortName: 'tst' },
13
14
  { chainId: 25, shortName: 'cro' },
14
15
  { chainId: 28, shortName: 'bobarinkeby' },
16
+ { chainId: 39, shortName: 'u2u' },
15
17
  { chainId: 40, shortName: 'telosevm' },
16
18
  { chainId: 41, shortName: 'telosevmtestnet' },
17
19
  { chainId: 42, shortName: 'kov' },
@@ -49,6 +51,11 @@ exports.networks = [
49
51
  { chainId: 1001, shortName: 'baobab' },
50
52
  { chainId: 1008, shortName: 'eun' },
51
53
  { chainId: 1088, shortName: 'metis-andromeda' },
54
+ { chainId: 1101, shortName: 'zkevm' },
55
+ { chainId: 1111, shortName: 'wemix' },
56
+ { chainId: 1112, shortName: 'twemix' },
57
+ { chainId: 1115, shortName: 'tcore' },
58
+ { chainId: 1116, shortName: 'core' },
52
59
  { chainId: 1284, shortName: 'mbeam' },
53
60
  { chainId: 1285, shortName: 'mriver' },
54
61
  { chainId: 1287, shortName: 'mbase' },
@@ -62,6 +69,7 @@ exports.networks = [
62
69
  { chainId: 2020, shortName: 'pmint' },
63
70
  { chainId: 2221, shortName: 'tkava' },
64
71
  { chainId: 2222, shortName: 'kava' },
72
+ { chainId: 3737, shortName: 'csb' },
65
73
  { chainId: 4002, shortName: 'tftm' },
66
74
  { chainId: 4689, shortName: 'iotex-mainnet' },
67
75
  { chainId: 4918, shortName: 'txvm' },
@@ -78,6 +86,7 @@ exports.networks = [
78
86
  { chainId: 11235, shortName: 'islm' },
79
87
  { chainId: 11437, shortName: 'shyftt' },
80
88
  { chainId: 12357, shortName: 'rei-testnet' },
89
+ { chainId: 23294, shortName: 'sapphire' },
81
90
  { chainId: 42161, shortName: 'arb1' },
82
91
  { chainId: 42170, shortName: 'arb-nova' },
83
92
  { chainId: 42220, shortName: 'celo' },
@@ -99,7 +108,9 @@ exports.networks = [
99
108
  { chainId: 333999, shortName: 'olympus' },
100
109
  { chainId: 421611, shortName: 'arb-rinkeby' },
101
110
  { chainId: 421613, shortName: 'arb-goerli' },
111
+ { chainId: 534353, shortName: 'scr-alpha' },
102
112
  { chainId: 11155111, shortName: 'sep' },
113
+ { chainId: 245022926, shortName: 'neonevm-devnet' },
103
114
  { chainId: 1313161554, shortName: 'aurora' },
104
115
  { chainId: 1313161555, shortName: 'aurora-testnet' },
105
116
  { chainId: 1666600000, shortName: 'hmy-s0' },
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/utils/eip-3770/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../../src/utils/eip-3770/config.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
+ export * from './address';
1
2
  export * from './eip-3770';
2
3
  export * from './eip-712';
3
4
  export * from './safeVersions';
4
- export * from './address';
5
+ export * from './signatures';
5
6
  export * from './transactions';
@@ -14,9 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./address"), exports);
17
18
  __exportStar(require("./eip-3770"), exports);
18
19
  __exportStar(require("./eip-712"), exports);
19
20
  __exportStar(require("./safeVersions"), exports);
20
- __exportStar(require("./address"), exports);
21
+ __exportStar(require("./signatures"), exports);
21
22
  __exportStar(require("./transactions"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6CAA0B;AAC1B,4CAAyB;AACzB,iDAA8B;AAC9B,4CAAyB;AACzB,iDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAAyB;AACzB,6CAA0B;AAC1B,4CAAyB;AACzB,iDAA8B;AAC9B,+CAA4B;AAC5B,iDAA8B"}
@@ -2,6 +2,7 @@ export declare enum SAFE_FEATURES {
2
2
  SAFE_TX_GAS_OPTIONAL = "SAFE_TX_GAS_OPTIONAL",
3
3
  SAFE_TX_GUARDS = "SAFE_TX_GUARDS",
4
4
  SAFE_FALLBACK_HANDLER = "SAFE_FALLBACK_HANDLER",
5
- ETH_SIGN = "ETH_SIGN"
5
+ ETH_SIGN = "ETH_SIGN",
6
+ ACCOUNT_ABSTRACTION = "ACCOUNT_ABSTRACTION"
6
7
  }
7
8
  export declare const hasSafeFeature: (feature: SAFE_FEATURES, version: string) => boolean;
@@ -11,12 +11,14 @@ var SAFE_FEATURES;
11
11
  SAFE_FEATURES["SAFE_TX_GUARDS"] = "SAFE_TX_GUARDS";
12
12
  SAFE_FEATURES["SAFE_FALLBACK_HANDLER"] = "SAFE_FALLBACK_HANDLER";
13
13
  SAFE_FEATURES["ETH_SIGN"] = "ETH_SIGN";
14
+ SAFE_FEATURES["ACCOUNT_ABSTRACTION"] = "ACCOUNT_ABSTRACTION";
14
15
  })(SAFE_FEATURES = exports.SAFE_FEATURES || (exports.SAFE_FEATURES = {}));
15
16
  const SAFE_FEATURES_BY_VERSION = {
16
17
  [SAFE_FEATURES.SAFE_TX_GAS_OPTIONAL]: '>=1.3.0',
17
18
  [SAFE_FEATURES.SAFE_TX_GUARDS]: '>=1.3.0',
18
19
  [SAFE_FEATURES.SAFE_FALLBACK_HANDLER]: '>=1.1.1',
19
- [SAFE_FEATURES.ETH_SIGN]: '>=1.1.0'
20
+ [SAFE_FEATURES.ETH_SIGN]: '>=1.1.0',
21
+ [SAFE_FEATURES.ACCOUNT_ABSTRACTION]: '>=1.3.0'
20
22
  };
21
23
  const hasSafeFeature = (feature, version) => {
22
24
  if (!(feature in SAFE_FEATURES_BY_VERSION)) {
@@ -1 +1 @@
1
- {"version":3,"file":"safeVersions.js","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAwD;AAExD,IAAY,aAKX;AALD,WAAY,aAAa;IACvB,8DAA6C,CAAA;IAC7C,kDAAiC,CAAA;IACjC,gEAA+C,CAAA;IAC/C,sCAAqB,CAAA;AACvB,CAAC,EALW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAKxB;AAED,MAAM,wBAAwB,GAAkC;IAC9D,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,SAAS;IAC/C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS;CACpC,CAAA;AAEM,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,OAAe,EAAW,EAAE;IACjF,IAAI,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,EAAE;QAC1C,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAA,mBAAe,EAAC,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B"}
1
+ {"version":3,"file":"safeVersions.js","sourceRoot":"","sources":["../../../src/utils/safeVersions.ts"],"names":[],"mappings":";;;;;;AAAA,2EAAwD;AAExD,IAAY,aAMX;AAND,WAAY,aAAa;IACvB,8DAA6C,CAAA;IAC7C,kDAAiC,CAAA;IACjC,gEAA+C,CAAA;IAC/C,sCAAqB,CAAA;IACrB,4DAA2C,CAAA;AAC7C,CAAC,EANW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAMxB;AAED,MAAM,wBAAwB,GAAkC;IAC9D,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE,SAAS;IAC/C,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,SAAS;IACzC,CAAC,aAAa,CAAC,qBAAqB,CAAC,EAAE,SAAS;IAChD,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,SAAS;IACnC,CAAC,aAAa,CAAC,mBAAmB,CAAC,EAAE,SAAS;CAC/C,CAAA;AAEM,MAAM,cAAc,GAAG,CAAC,OAAsB,EAAE,OAAe,EAAW,EAAE;IACjF,IAAI,CAAC,CAAC,OAAO,IAAI,wBAAwB,CAAC,EAAE;QAC1C,OAAO,KAAK,CAAA;KACb;IAED,OAAO,IAAA,mBAAe,EAAC,OAAO,EAAE,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;AACpE,CAAC,CAAA;AANY,QAAA,cAAc,kBAM1B"}
@@ -1,5 +1,5 @@
1
1
  import { SafeSignature } from '@safe-global/safe-core-sdk-types';
2
- declare class EthSignSignature implements SafeSignature {
2
+ export declare class EthSafeSignature implements SafeSignature {
3
3
  signer: string;
4
4
  data: string;
5
5
  /**
@@ -23,4 +23,3 @@ declare class EthSignSignature implements SafeSignature {
23
23
  */
24
24
  dynamicPart(): string;
25
25
  }
26
- export default EthSignSignature;
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- class EthSignSignature {
3
+ exports.EthSafeSignature = void 0;
4
+ class EthSafeSignature {
4
5
  /**
5
6
  * Creates an instance of a Safe signature.
6
7
  *
@@ -29,5 +30,5 @@ class EthSignSignature {
29
30
  return '';
30
31
  }
31
32
  }
32
- exports.default = EthSignSignature;
33
+ exports.EthSafeSignature = EthSafeSignature;
33
34
  //# sourceMappingURL=SafeSignature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SafeSignature.js","sourceRoot":"","sources":["../../../../src/utils/signatures/SafeSignature.ts"],"names":[],"mappings":";;AAEA,MAAM,gBAAgB;IAIpB;;;;;;OAMG;IACH,YAAY,MAAc,EAAE,SAAiB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACvB,CAAC;IAED;;;;OAIG;IACH,UAAU,EAAC,2BAA2B;QACpC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAED,kBAAe,gBAAgB,CAAA"}
1
+ {"version":3,"file":"SafeSignature.js","sourceRoot":"","sources":["../../../../src/utils/signatures/SafeSignature.ts"],"names":[],"mappings":";;;AAEA,MAAa,gBAAgB;IAI3B;;;;;;OAMG;IACH,YAAY,MAAc,EAAE,SAAiB;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAA;QACpB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAA;IACvB,CAAC;IAED;;;;OAIG;IACH,UAAU,EAAC,2BAA2B;QACpC,OAAO,IAAI,CAAC,IAAI,CAAA;IAClB,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,EAAE,CAAA;IACX,CAAC;CACF;AAjCD,4CAiCC"}
@@ -1,12 +1,2 @@
1
- import { EthAdapter, SafeSignature, SafeTransactionEIP712Args } from '@safe-global/safe-core-sdk-types';
2
- import EthSignSignature from './SafeSignature';
3
- export declare function generatePreValidatedSignature(ownerAddress: string): SafeSignature;
4
- export declare function isTxHashSignedWithPrefix(txHash: string, signature: string, ownerAddress: string): boolean;
5
- type AdjustVOverload = {
6
- (signingMethod: 'eth_signTypedData', signature: string): string;
7
- (signingMethod: 'eth_sign', signature: string, safeTxHash: string, sender: string): string;
8
- };
9
- export declare const adjustVInSignature: AdjustVOverload;
10
- export declare function generateSignature(ethAdapter: EthAdapter, hash: string): Promise<EthSignSignature>;
11
- export declare function generateEIP712Signature(ethAdapter: EthAdapter, safeTransactionEIP712Args: SafeTransactionEIP712Args, methodVersion?: 'v3' | 'v4'): Promise<EthSignSignature>;
12
- export {};
1
+ export * from './SafeSignature';
2
+ export * from './utils';
@@ -1,94 +1,19 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.generateEIP712Signature = exports.generateSignature = exports.adjustVInSignature = exports.isTxHashSignedWithPrefix = exports.generatePreValidatedSignature = void 0;
7
- const ethereumjs_util_1 = require("ethereumjs-util");
8
- const address_1 = require("../address");
9
- const SafeSignature_1 = __importDefault(require("./SafeSignature"));
10
- function generatePreValidatedSignature(ownerAddress) {
11
- const signature = '0x000000000000000000000000' +
12
- ownerAddress.slice(2) +
13
- '0000000000000000000000000000000000000000000000000000000000000000' +
14
- '01';
15
- return new SafeSignature_1.default(ownerAddress, signature);
16
- }
17
- exports.generatePreValidatedSignature = generatePreValidatedSignature;
18
- function isTxHashSignedWithPrefix(txHash, signature, ownerAddress) {
19
- let hasPrefix;
20
- try {
21
- const rsvSig = {
22
- r: Buffer.from(signature.slice(2, 66), 'hex'),
23
- s: Buffer.from(signature.slice(66, 130), 'hex'),
24
- v: parseInt(signature.slice(130, 132), 16)
25
- };
26
- const recoveredData = (0, ethereumjs_util_1.ecrecover)(Buffer.from(txHash.slice(2), 'hex'), rsvSig.v, rsvSig.r, rsvSig.s);
27
- const recoveredAddress = (0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.pubToAddress)(recoveredData));
28
- hasPrefix = !(0, address_1.sameString)(recoveredAddress, ownerAddress);
29
- }
30
- catch (e) {
31
- hasPrefix = true;
32
- }
33
- return hasPrefix;
34
- }
35
- exports.isTxHashSignedWithPrefix = isTxHashSignedWithPrefix;
36
- const adjustVInSignature = (signingMethod, signature, safeTxHash, signerAddress) => {
37
- const ETHEREUM_V_VALUES = [0, 1, 27, 28];
38
- const MIN_VALID_V_VALUE_FOR_SAFE_ECDSA = 27;
39
- let signatureV = parseInt(signature.slice(-2), 16);
40
- if (!ETHEREUM_V_VALUES.includes(signatureV)) {
41
- throw new Error('Invalid signature');
42
- }
43
- if (signingMethod === 'eth_sign') {
44
- /*
45
- The Safe's expected V value for ECDSA signature is:
46
- - 27 or 28
47
- - 31 or 32 if the message was signed with a EIP-191 prefix. Should be calculated as ECDSA V value + 4
48
- Some wallets do that, some wallets don't, V > 30 is used by contracts to differentiate between
49
- prefixed and non-prefixed messages. The only way to know if the message was signed with a
50
- prefix is to check if the signer address is the same as the recovered address.
51
-
52
- More info:
53
- https://docs.safe.global/learn/signatures
54
- */
55
- if (signatureV < MIN_VALID_V_VALUE_FOR_SAFE_ECDSA) {
56
- signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
57
- }
58
- const adjustedSignature = signature.slice(0, -2) + signatureV.toString(16);
59
- const signatureHasPrefix = isTxHashSignedWithPrefix(safeTxHash, adjustedSignature, signerAddress);
60
- if (signatureHasPrefix) {
61
- signatureV += 4;
62
- }
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
63
7
  }
64
- if (signingMethod === 'eth_signTypedData') {
65
- // Metamask with ledger returns V=0/1 here too, we need to adjust it to be ethereum's valid value (27 or 28)
66
- if (signatureV < MIN_VALID_V_VALUE_FOR_SAFE_ECDSA) {
67
- signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
68
- }
69
- }
70
- signature = signature.slice(0, -2) + signatureV.toString(16);
71
- return signature;
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
72
15
  };
73
- exports.adjustVInSignature = adjustVInSignature;
74
- async function generateSignature(ethAdapter, hash) {
75
- const signerAddress = await ethAdapter.getSignerAddress();
76
- if (!signerAddress) {
77
- throw new Error('EthAdapter must be initialized with a signer to use this method');
78
- }
79
- let signature = await ethAdapter.signMessage(hash);
80
- signature = (0, exports.adjustVInSignature)('eth_sign', signature, hash, signerAddress);
81
- return new SafeSignature_1.default(signerAddress, signature);
82
- }
83
- exports.generateSignature = generateSignature;
84
- async function generateEIP712Signature(ethAdapter, safeTransactionEIP712Args, methodVersion) {
85
- const signerAddress = await ethAdapter.getSignerAddress();
86
- if (!signerAddress) {
87
- throw new Error('EthAdapter must be initialized with a signer to use this method');
88
- }
89
- let signature = await ethAdapter.signTypedData(safeTransactionEIP712Args, methodVersion);
90
- signature = (0, exports.adjustVInSignature)('eth_signTypedData', signature);
91
- return new SafeSignature_1.default(signerAddress, signature);
92
- }
93
- exports.generateEIP712Signature = generateEIP712Signature;
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SafeSignature"), exports);
18
+ __exportStar(require("./utils"), exports);
94
19
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/signatures/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/utils/signatures/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAA+B;AAC/B,0CAAuB"}
@@ -0,0 +1,11 @@
1
+ import { EthAdapter, SafeSignature, SafeTransactionEIP712Args } from '@safe-global/safe-core-sdk-types';
2
+ export declare function generatePreValidatedSignature(ownerAddress: string): SafeSignature;
3
+ export declare function isTxHashSignedWithPrefix(txHash: string, signature: string, ownerAddress: string): boolean;
4
+ type AdjustVOverload = {
5
+ (signingMethod: 'eth_signTypedData', signature: string): string;
6
+ (signingMethod: 'eth_sign', signature: string, safeTxHash: string, sender: string): string;
7
+ };
8
+ export declare const adjustVInSignature: AdjustVOverload;
9
+ export declare function generateSignature(ethAdapter: EthAdapter, hash: string): Promise<SafeSignature>;
10
+ export declare function generateEIP712Signature(ethAdapter: EthAdapter, safeTransactionEIP712Args: SafeTransactionEIP712Args, methodVersion?: 'v3' | 'v4'): Promise<SafeSignature>;
11
+ export {};
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.generateEIP712Signature = exports.generateSignature = exports.adjustVInSignature = exports.isTxHashSignedWithPrefix = exports.generatePreValidatedSignature = void 0;
4
+ const ethereumjs_util_1 = require("ethereumjs-util");
5
+ const address_1 = require("../address");
6
+ const SafeSignature_1 = require("./SafeSignature");
7
+ function generatePreValidatedSignature(ownerAddress) {
8
+ const signature = '0x000000000000000000000000' +
9
+ ownerAddress.slice(2) +
10
+ '0000000000000000000000000000000000000000000000000000000000000000' +
11
+ '01';
12
+ return new SafeSignature_1.EthSafeSignature(ownerAddress, signature);
13
+ }
14
+ exports.generatePreValidatedSignature = generatePreValidatedSignature;
15
+ function isTxHashSignedWithPrefix(txHash, signature, ownerAddress) {
16
+ let hasPrefix;
17
+ try {
18
+ const rsvSig = {
19
+ r: Buffer.from(signature.slice(2, 66), 'hex'),
20
+ s: Buffer.from(signature.slice(66, 130), 'hex'),
21
+ v: parseInt(signature.slice(130, 132), 16)
22
+ };
23
+ const recoveredData = (0, ethereumjs_util_1.ecrecover)(Buffer.from(txHash.slice(2), 'hex'), rsvSig.v, rsvSig.r, rsvSig.s);
24
+ const recoveredAddress = (0, ethereumjs_util_1.bufferToHex)((0, ethereumjs_util_1.pubToAddress)(recoveredData));
25
+ hasPrefix = !(0, address_1.sameString)(recoveredAddress, ownerAddress);
26
+ }
27
+ catch (e) {
28
+ hasPrefix = true;
29
+ }
30
+ return hasPrefix;
31
+ }
32
+ exports.isTxHashSignedWithPrefix = isTxHashSignedWithPrefix;
33
+ const adjustVInSignature = (signingMethod, signature, safeTxHash, signerAddress) => {
34
+ const ETHEREUM_V_VALUES = [0, 1, 27, 28];
35
+ const MIN_VALID_V_VALUE_FOR_SAFE_ECDSA = 27;
36
+ let signatureV = parseInt(signature.slice(-2), 16);
37
+ if (!ETHEREUM_V_VALUES.includes(signatureV)) {
38
+ throw new Error('Invalid signature');
39
+ }
40
+ if (signingMethod === 'eth_sign') {
41
+ /*
42
+ The Safe's expected V value for ECDSA signature is:
43
+ - 27 or 28
44
+ - 31 or 32 if the message was signed with a EIP-191 prefix. Should be calculated as ECDSA V value + 4
45
+ Some wallets do that, some wallets don't, V > 30 is used by contracts to differentiate between
46
+ prefixed and non-prefixed messages. The only way to know if the message was signed with a
47
+ prefix is to check if the signer address is the same as the recovered address.
48
+
49
+ More info:
50
+ https://docs.safe.global/learn/signatures
51
+ */
52
+ if (signatureV < MIN_VALID_V_VALUE_FOR_SAFE_ECDSA) {
53
+ signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
54
+ }
55
+ const adjustedSignature = signature.slice(0, -2) + signatureV.toString(16);
56
+ const signatureHasPrefix = isTxHashSignedWithPrefix(safeTxHash, adjustedSignature, signerAddress);
57
+ if (signatureHasPrefix) {
58
+ signatureV += 4;
59
+ }
60
+ }
61
+ if (signingMethod === 'eth_signTypedData') {
62
+ // Metamask with ledger returns V=0/1 here too, we need to adjust it to be ethereum's valid value (27 or 28)
63
+ if (signatureV < MIN_VALID_V_VALUE_FOR_SAFE_ECDSA) {
64
+ signatureV += MIN_VALID_V_VALUE_FOR_SAFE_ECDSA;
65
+ }
66
+ }
67
+ signature = signature.slice(0, -2) + signatureV.toString(16);
68
+ return signature;
69
+ };
70
+ exports.adjustVInSignature = adjustVInSignature;
71
+ async function generateSignature(ethAdapter, hash) {
72
+ const signerAddress = await ethAdapter.getSignerAddress();
73
+ if (!signerAddress) {
74
+ throw new Error('EthAdapter must be initialized with a signer to use this method');
75
+ }
76
+ let signature = await ethAdapter.signMessage(hash);
77
+ signature = (0, exports.adjustVInSignature)('eth_sign', signature, hash, signerAddress);
78
+ return new SafeSignature_1.EthSafeSignature(signerAddress, signature);
79
+ }
80
+ exports.generateSignature = generateSignature;
81
+ async function generateEIP712Signature(ethAdapter, safeTransactionEIP712Args, methodVersion) {
82
+ const signerAddress = await ethAdapter.getSignerAddress();
83
+ if (!signerAddress) {
84
+ throw new Error('EthAdapter must be initialized with a signer to use this method');
85
+ }
86
+ let signature = await ethAdapter.signTypedData(safeTransactionEIP712Args, methodVersion);
87
+ signature = (0, exports.adjustVInSignature)('eth_signTypedData', signature);
88
+ return new SafeSignature_1.EthSafeSignature(signerAddress, signature);
89
+ }
90
+ exports.generateEIP712Signature = generateEIP712Signature;
91
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/utils/signatures/utils.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  import { EthAdapter, GnosisSafeContract, OperationType } from '@safe-global/safe-core-sdk-types';
2
- export declare function estimateTxGas(safeContract: GnosisSafeContract, ethAdapter: EthAdapter, to: string, valueInWei: string, data: string, operation: OperationType): Promise<number>;
2
+ export declare function estimateTxGas(safeContract: GnosisSafeContract, ethAdapter: EthAdapter, to: string, valueInWei: string, data: string, operation: OperationType): Promise<string>;
@@ -16,7 +16,7 @@ function estimateDataGasCosts(data) {
16
16
  return data.match(/.{2}/g).reduce(reducer, 0);
17
17
  }
18
18
  async function estimateTxGas(safeContract, ethAdapter, to, valueInWei, data, operation) {
19
- let txGasEstimation = 0;
19
+ let txGasEstimation = bignumber_1.BigNumber.from(0);
20
20
  const safeAddress = safeContract.getAddress();
21
21
  const estimateData = safeContract.encode('requiredTxGas', [
22
22
  to,
@@ -25,15 +25,15 @@ async function estimateTxGas(safeContract, ethAdapter, to, valueInWei, data, ope
25
25
  operation
26
26
  ]);
27
27
  try {
28
- const estimateResponse = (await ethAdapter.estimateGas({
28
+ const estimateResponse = await ethAdapter.estimateGas({
29
29
  to: safeAddress,
30
30
  from: safeAddress,
31
31
  data: estimateData
32
- })).toString();
33
- txGasEstimation = bignumber_1.BigNumber.from('0x' + estimateResponse.substring(138)).toNumber() + 10000;
32
+ });
33
+ txGasEstimation = bignumber_1.BigNumber.from('0x' + estimateResponse.substring(138)).add(10000);
34
34
  }
35
35
  catch (error) { }
36
- if (txGasEstimation > 0) {
36
+ if (txGasEstimation.gt(0)) {
37
37
  const dataGasEstimation = estimateDataGasCosts(estimateData);
38
38
  let additionalGas = 10000;
39
39
  for (let i = 0; i < 10; i++) {
@@ -42,18 +42,18 @@ async function estimateTxGas(safeContract, ethAdapter, to, valueInWei, data, ope
42
42
  to: safeAddress,
43
43
  from: safeAddress,
44
44
  data: estimateData,
45
- gasPrice: 0,
46
- gasLimit: txGasEstimation + dataGasEstimation + additionalGas
45
+ gasPrice: '0',
46
+ gasLimit: txGasEstimation.add(dataGasEstimation).add(additionalGas).toString()
47
47
  });
48
48
  if (estimateResponse !== '0x') {
49
49
  break;
50
50
  }
51
51
  }
52
52
  catch (error) { }
53
- txGasEstimation += additionalGas;
53
+ txGasEstimation = txGasEstimation.add(additionalGas);
54
54
  additionalGas *= 2;
55
55
  }
56
- return txGasEstimation + additionalGas;
56
+ return txGasEstimation.add(additionalGas).toString();
57
57
  }
58
58
  try {
59
59
  const estimateGas = await ethAdapter.estimateGas({
@@ -66,7 +66,7 @@ async function estimateTxGas(safeContract, ethAdapter, to, valueInWei, data, ope
66
66
  }
67
67
  catch (error) {
68
68
  if (operation === safe_core_sdk_types_1.OperationType.DelegateCall) {
69
- return 0;
69
+ return '0';
70
70
  }
71
71
  return Promise.reject(error);
72
72
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":";;;AAAA,wDAAoD;AACpD,0EAAgG;AAEhG,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,CAAC,WAAmB,EAAE,YAAoB,EAAE,EAAE;QAC5D,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,OAAO,WAAW,GAAG,CAAC,CAAA;SACvB;QACD,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,OAAO,WAAW,GAAG,CAAC,CAAA;SACvB;QACD,OAAO,WAAW,GAAG,EAAE,CAAA;IACzB,CAAC,CAAA;IACD,OAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;AAC7D,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,YAAgC,EAChC,UAAsB,EACtB,EAAU,EACV,UAAkB,EAClB,IAAY,EACZ,SAAwB;IAExB,IAAI,eAAe,GAAG,CAAC,CAAA;IACvB,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,CAAA;IAE7C,MAAM,YAAY,GAAW,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE;QAChE,EAAE;QACF,UAAU;QACV,IAAI;QACJ,SAAS;KACV,CAAC,CAAA;IACF,IAAI;QACF,MAAM,gBAAgB,GAAG,CACvB,MAAM,UAAU,CAAC,WAAW,CAAC;YAC3B,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,YAAY;SACnB,CAAC,CACH,CAAC,QAAQ,EAAE,CAAA;QACZ,eAAe,GAAG,qBAAS,CAAC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAA;KAC5F;IAAC,OAAO,KAAK,EAAE,GAAE;IAElB,IAAI,eAAe,GAAG,CAAC,EAAE;QACvB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAC5D,IAAI,aAAa,GAAG,KAAK,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI;gBACF,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;oBAC7C,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,CAAC;oBACX,QAAQ,EAAE,eAAe,GAAG,iBAAiB,GAAG,aAAa;iBAC9D,CAAC,CAAA;gBACF,IAAI,gBAAgB,KAAK,IAAI,EAAE;oBAC7B,MAAK;iBACN;aACF;YAAC,OAAO,KAAK,EAAE,GAAE;YAClB,eAAe,IAAI,aAAa,CAAA;YAChC,aAAa,IAAI,CAAC,CAAA;SACnB;QACD,OAAO,eAAe,GAAG,aAAa,CAAA;KACvC;IAED,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC;YAC/C,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,UAAU;YACjB,IAAI;SACL,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;KACnB;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,SAAS,KAAK,mCAAa,CAAC,YAAY,EAAE;YAC5C,OAAO,CAAC,CAAA;SACT;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAC7B;AACH,CAAC;AAhED,sCAgEC"}
1
+ {"version":3,"file":"gas.js","sourceRoot":"","sources":["../../../../src/utils/transactions/gas.ts"],"names":[],"mappings":";;;AAAA,wDAAoD;AACpD,0EAAgG;AAEhG,SAAS,oBAAoB,CAAC,IAAY;IACxC,MAAM,OAAO,GAAG,CAAC,WAAmB,EAAE,YAAoB,EAAE,EAAE;QAC5D,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,OAAO,WAAW,GAAG,CAAC,CAAA;SACvB;QACD,IAAI,YAAY,KAAK,IAAI,EAAE;YACzB,OAAO,WAAW,GAAG,CAAC,CAAA;SACvB;QACD,OAAO,WAAW,GAAG,EAAE,CAAA;IACzB,CAAC,CAAA;IACD,OAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAc,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAA;AAC7D,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,YAAgC,EAChC,UAAsB,EACtB,EAAU,EACV,UAAkB,EAClB,IAAY,EACZ,SAAwB;IAExB,IAAI,eAAe,GAAG,qBAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACvC,MAAM,WAAW,GAAG,YAAY,CAAC,UAAU,EAAE,CAAA;IAE7C,MAAM,YAAY,GAAW,YAAY,CAAC,MAAM,CAAC,eAAe,EAAE;QAChE,EAAE;QACF,UAAU;QACV,IAAI;QACJ,SAAS;KACV,CAAC,CAAA;IACF,IAAI;QACF,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC;YACpD,EAAE,EAAE,WAAW;YACf,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,YAAY;SACnB,CAAC,CAAA;QACF,eAAe,GAAG,qBAAS,CAAC,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;KACpF;IAAC,OAAO,KAAK,EAAE,GAAE;IAElB,IAAI,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;QACzB,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,YAAY,CAAC,CAAA;QAC5D,IAAI,aAAa,GAAG,KAAK,CAAA;QACzB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;YAC3B,IAAI;gBACF,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC;oBAC7C,EAAE,EAAE,WAAW;oBACf,IAAI,EAAE,WAAW;oBACjB,IAAI,EAAE,YAAY;oBAClB,QAAQ,EAAE,GAAG;oBACb,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE;iBAC/E,CAAC,CAAA;gBACF,IAAI,gBAAgB,KAAK,IAAI,EAAE;oBAC7B,MAAK;iBACN;aACF;YAAC,OAAO,KAAK,EAAE,GAAE;YAClB,eAAe,GAAG,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;YACpD,aAAa,IAAI,CAAC,CAAA;SACnB;QACD,OAAO,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAA;KACrD;IAED,IAAI;QACF,MAAM,WAAW,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC;YAC/C,EAAE;YACF,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,UAAU;YACjB,IAAI;SACL,CAAC,CAAA;QACF,OAAO,WAAW,CAAA;KACnB;IAAC,OAAO,KAAK,EAAE;QACd,IAAI,SAAS,KAAK,mCAAa,CAAC,YAAY,EAAE;YAC5C,OAAO,GAAG,CAAA;SACX;QACD,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;KAC7B;AACH,CAAC;AA9DD,sCA8DC"}