├── .gitignore ├── LICENSE ├── README.md ├── index.html ├── package.json ├── postcss.config.js ├── public ├── passport.wasm ├── passport_0001.zkey └── snarkjs.min.js ├── src ├── App.tsx ├── common │ └── constants.ts ├── components │ ├── Account.tsx │ ├── Email.tsx │ ├── Login.tsx │ └── NFTInfo.tsx ├── contracts │ ├── INSRegistry.ts │ ├── INSRegistry__factory.ts │ ├── PublicResolver.ts │ ├── PublicResolver__factory.ts │ ├── ZKPWalletNFT.ts │ ├── ZKPWalletNFT__factory.ts │ ├── ZKPassAccount.ts │ ├── ZKPassAccountFactory.ts │ ├── ZKPassAccountFactory__factory.ts │ ├── ZKPassAccount__factory.ts │ ├── common.ts │ └── index.ts ├── main.tsx ├── signer │ └── index.ts ├── store │ ├── base.ts │ ├── index.ts │ └── root.ts └── styles │ └── globals.css ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json ├── vite.config.js └── yarn.lock /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 IoTeX Network 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ZKP wallet UI 2 | ============= 3 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 10 | 11 | ZKP Wallet 12 | 13 | 14 |
15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "zkp-wallet-ui", 3 | "version": "0.1.0", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "tsc && vite build", 7 | "preview": "vite preview" 8 | }, 9 | "dependencies": { 10 | "@account-abstraction/contracts": "^0.6.0", 11 | "@headlessui/react": "^1.7.13", 12 | "@heroicons/react": "^2.0.16", 13 | "@tailwindcss/line-clamp": "^0.4.2", 14 | "ethers": "5.7.2", 15 | "mobx": "^6.2.0", 16 | "mobx-react-lite": "^3.2.0", 17 | "react": "^18.2.0", 18 | "react-dom": "^18.2.0", 19 | "snarkjs": "^0.7.0", 20 | "userop": "^0.3.3" 21 | }, 22 | "devDependencies": { 23 | "@types/react": "^18.0.9", 24 | "@types/react-dom": "^18.0.5", 25 | "@vitejs/plugin-react": "^2", 26 | "autoprefixer": "^10.4.13", 27 | "postcss": "^8.4.21", 28 | "tailwindcss": "^3.2.7", 29 | "tailwindcss-safe-area": "^0.2.2", 30 | "typescript": "^4.7.2", 31 | "vite": "^3", 32 | "vite-plugin-node-polyfills": "^0.7.0" 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/passport.wasm: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iotexproject/zkp-wallet-ui/9a664ccc97d4c5d03d95781f73e7cd06975bc76e/public/passport.wasm -------------------------------------------------------------------------------- /public/passport_0001.zkey: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/iotexproject/zkp-wallet-ui/9a664ccc97d4c5d03d95781f73e7cd06975bc76e/public/passport_0001.zkey -------------------------------------------------------------------------------- /src/App.tsx: -------------------------------------------------------------------------------- 1 | import { observer } from "mobx-react-lite"; 2 | import { useStore } from "./store"; 3 | import { Login } from "./components/Login"; 4 | import { NFTInfo } from "./components/NFTInfo"; 5 | import { Account } from "./components/Account"; 6 | 7 | export const App = observer(() => { 8 | const { base } = useStore(); 9 | 10 | return ( 11 |
12 |
13 |
14 |
15 |

16 | Welcome to the ZKP NFT Wallet 17 |

18 |

Overview

19 |

20 | This demo illustrates the application of ZK-SNARK to Account Abstraction, 21 | enabling users to create a Blockchain Wallet that they can 22 | seamlessly control with just a username and password. 23 | Additionally, users can recover their wallet via email, and there 24 | is no requirement for them to maintain any token balance to 25 | execute transactions. 26 |

27 |

Key Features

28 |
    29 |
  1. 30 | - Utilization of a ZK-SNARK Prover for generating proofs of 31 | password knowledge. 32 |
  2. 33 |
  3. 34 | - Implementation of DKIM verification in the Account logic 35 | to establish a secure email recovery process. 36 |
  4. 37 |
  5. 38 | - Integration of the 39 | Paymaster pattern to sponsor gas fees for transactions. 40 |
  6. 41 |
42 |
43 |
44 | 49 |
50 |
51 | 52 | {base.isLogin ? : } 53 |
54 | 55 |
56 | {base.info.show ? ( 57 |
58 |

59 | {base.info.text} 60 |

61 |
62 | ) : null} 63 |
64 |
65 | ); 66 | }); 67 | 68 | export default App; 69 | -------------------------------------------------------------------------------- /src/common/constants.ts: -------------------------------------------------------------------------------- 1 | export const addresses = { 2 | "testnet": { 3 | endpoint: "https://babel-api.testnet.iotex.io", 4 | bundler: "https://bundler.testnet.w3bstream.com", 5 | paymaster: "https://paymaster.testnet.w3bstream.com/rpc/a0a7767f2aaa4db1b385f71dd82e55ea", 6 | binder: "https://email-binder.testnet.iotex.io", 7 | // endpoint: "http://127.0.0.1:8545", 8 | // bundler: "http://127.0.0.1:4337", 9 | // paymaster: "http://localhost:8888/rpc/1234567890", 10 | // binder: "http://127.0.0.1:3000", 11 | entryPoint: "0xc3527348De07d591c9d567ce1998eFA2031B8675", 12 | accountFactory: "0x85B6E973EF283727A2c7E2D8D6C86AE8bcAb8029", 13 | registry: "0x845d8ccb0D92174B33AC9A876B65c49Ca4676685", 14 | nft: "0xA3Ce183b2EA38053f85A160857E6f6A8C10EF5f7", 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/components/Account.tsx: -------------------------------------------------------------------------------- 1 | import { observer } from "mobx-react-lite"; 2 | import { useStore } from "../store"; 3 | import { useEffect } from "react"; 4 | import { Email } from "./Email"; 5 | 6 | export const Account = observer(() => { 7 | const { base } = useStore(); 8 | 9 | useEffect(() => { 10 | base.fillAccount() 11 | setInterval(async () => await base.fillAccount(), 10000) 12 | }, []) 13 | 14 | return ( 15 | base.showEmail? : 16 |
17 |
18 |
Account name: {base.account.username}.t2wallet.io
19 |
Account minted: {base.account.created?'True':'False'}
20 |
Account address: {base.account.address}
21 |
Account balance: {base.account.balance} IOTX
22 |
Recovery email: {base.account.guarded?'Set':'Not Set'}
23 |
Minted NFT amount: {base.account.nft}
24 | {base.disableButton? ( 25 | 30 | ) : ( 31 | 37 | ) 38 | } 39 | {base.account.created? 40 | 46 | : null 47 | } 48 | 49 | 55 |
56 |
57 | ) 58 | }) 59 | -------------------------------------------------------------------------------- /src/components/Email.tsx: -------------------------------------------------------------------------------- 1 | import { observer } from "mobx-react-lite"; 2 | import { useStore } from "../store"; 3 | 4 | export const Email = observer(() => { 5 | const { base } = useStore(); 6 | 7 | return ( 8 |
9 |
10 |
Account name: {base.account.username}.t2wallet.io
11 |
12 | 13 |
14 | { 15 | base.email = e.target.value 16 | }} id="email" name="email" type="input" 17 | required 18 | className="block w-full rounded-md border-0 py-1.5 text-gray-900 pl-2 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6" 19 | /> 20 |
21 | 22 |
23 | { 24 | base.code = e.target.value 25 | }} id="code" name="code" type="input" 26 | required 27 | className="block w-full rounded-md border-0 py-1.5 text-gray-900 pl-2 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6" 28 | /> 29 |
30 | 35 | {base.disableButton? 36 | : 41 | } 47 |
48 |
49 |
50 | ) 51 | }) 52 | -------------------------------------------------------------------------------- /src/components/Login.tsx: -------------------------------------------------------------------------------- 1 | import { observer } from "mobx-react-lite"; 2 | import { useStore } from "../store"; 3 | 4 | export const Login = observer(() => { 5 | const { base } = useStore(); 6 | 7 | return ( 8 |
9 |
10 |
11 | 13 |

Please enter your zk wallet name if you already have one, or chose a name for a new account:

14 |
15 |
17 | { 18 | base.username = e.target.value 19 | }} type="text" name="username" id="username" autoComplete="username" 20 | className="block flex-1 border-0 bg-transparent py-1.5 pl-2 text-gray-900 placeholder:text-gray-400 focus:ring-0 sm:text-sm sm:leading-6" 21 | placeholder="test"> 22 | .t2wallet.io 24 |
25 |
26 |
27 |
28 |
29 | 31 |

Please enter your zk wallet password if you already have one, or chose a password for a new account. If you input the wrong password for an existing account, you'll be allowed to recover by email if you enabled email recovery for your wallet.

32 | 33 |
34 |
35 | { 36 | base.password = e.target.value 37 | }} id="password" name="password" type="password" autoComplete="current-password" 38 | required 39 | className="block w-full rounded-md border-0 py-1.5 text-gray-900 pl-2 shadow-sm ring-1 ring-inset ring-gray-300 placeholder:text-gray-400 focus:ring-2 focus:ring-inset focus:ring-indigo-600 sm:text-sm sm:leading-6" 40 | /> 41 |
42 |
43 |
44 | {base.disableButton? ( 45 | 50 | ) : ( 51 | 57 | ) 58 | } 59 | {base.showRecovery? 60 | : null 66 | } 67 |
68 |
69 | {base.showRecoveryMessage? 70 |
71 |
72 |
73 |
74 |
75 |
76 | 77 |
78 |

{base.recoveryMessage}

79 |
80 |
81 |
82 |
83 |
84 | 85 |
86 |
87 |
88 |
89 | : null} 90 |
91 | ) 92 | }) 93 | -------------------------------------------------------------------------------- /src/components/NFTInfo.tsx: -------------------------------------------------------------------------------- 1 | import { observer } from "mobx-react-lite" 2 | import { useStore } from "../store" 3 | import { useEffect } from "react" 4 | 5 | export const NFTInfo = observer(() => { 6 | const { base } = useStore() 7 | 8 | useEffect(() => { 9 | base.fetchMintedNFT() 10 | setInterval(async () => await base.fetchMintedNFT(), 10000) 11 | }, []) 12 | 13 | return ( 14 |
15 |

16 | {base.minted} / 20000 17 |

18 |

19 | NFTs minted by all users 20 |

21 |
22 | ) 23 | }) 24 | -------------------------------------------------------------------------------- /src/contracts/INSRegistry.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { 5 | BaseContract, 6 | BigNumber, 7 | BigNumberish, 8 | BytesLike, 9 | CallOverrides, 10 | ContractTransaction, 11 | Overrides, 12 | PopulatedTransaction, 13 | Signer, 14 | utils, 15 | } from "ethers"; 16 | import type { 17 | FunctionFragment, 18 | Result, 19 | EventFragment, 20 | } from "@ethersproject/abi"; 21 | import type { Listener, Provider } from "@ethersproject/providers"; 22 | import type { 23 | TypedEventFilter, 24 | TypedEvent, 25 | TypedListener, 26 | OnEvent, 27 | PromiseOrValue, 28 | } from "./common"; 29 | 30 | export interface INSRegistryInterface extends utils.Interface { 31 | functions: { 32 | "isApprovedForAll(address,address)": FunctionFragment; 33 | "owner(bytes32)": FunctionFragment; 34 | "recordExists(bytes32)": FunctionFragment; 35 | "resolver(bytes32)": FunctionFragment; 36 | "setApprovalForAll(address,bool)": FunctionFragment; 37 | "setOwner(bytes32,address)": FunctionFragment; 38 | "setRecord(bytes32,address,address,uint64)": FunctionFragment; 39 | "setResolver(bytes32,address)": FunctionFragment; 40 | "setSubnodeOwner(bytes32,bytes32,address)": FunctionFragment; 41 | "setSubnodeRecord(bytes32,bytes32,address,address,uint64)": FunctionFragment; 42 | "setTTL(bytes32,uint64)": FunctionFragment; 43 | "ttl(bytes32)": FunctionFragment; 44 | }; 45 | 46 | getFunction( 47 | nameOrSignatureOrTopic: 48 | | "isApprovedForAll" 49 | | "owner" 50 | | "recordExists" 51 | | "resolver" 52 | | "setApprovalForAll" 53 | | "setOwner" 54 | | "setRecord" 55 | | "setResolver" 56 | | "setSubnodeOwner" 57 | | "setSubnodeRecord" 58 | | "setTTL" 59 | | "ttl" 60 | ): FunctionFragment; 61 | 62 | encodeFunctionData( 63 | functionFragment: "isApprovedForAll", 64 | values: [PromiseOrValue, PromiseOrValue] 65 | ): string; 66 | encodeFunctionData( 67 | functionFragment: "owner", 68 | values: [PromiseOrValue] 69 | ): string; 70 | encodeFunctionData( 71 | functionFragment: "recordExists", 72 | values: [PromiseOrValue] 73 | ): string; 74 | encodeFunctionData( 75 | functionFragment: "resolver", 76 | values: [PromiseOrValue] 77 | ): string; 78 | encodeFunctionData( 79 | functionFragment: "setApprovalForAll", 80 | values: [PromiseOrValue, PromiseOrValue] 81 | ): string; 82 | encodeFunctionData( 83 | functionFragment: "setOwner", 84 | values: [PromiseOrValue, PromiseOrValue] 85 | ): string; 86 | encodeFunctionData( 87 | functionFragment: "setRecord", 88 | values: [ 89 | PromiseOrValue, 90 | PromiseOrValue, 91 | PromiseOrValue, 92 | PromiseOrValue 93 | ] 94 | ): string; 95 | encodeFunctionData( 96 | functionFragment: "setResolver", 97 | values: [PromiseOrValue, PromiseOrValue] 98 | ): string; 99 | encodeFunctionData( 100 | functionFragment: "setSubnodeOwner", 101 | values: [ 102 | PromiseOrValue, 103 | PromiseOrValue, 104 | PromiseOrValue 105 | ] 106 | ): string; 107 | encodeFunctionData( 108 | functionFragment: "setSubnodeRecord", 109 | values: [ 110 | PromiseOrValue, 111 | PromiseOrValue, 112 | PromiseOrValue, 113 | PromiseOrValue, 114 | PromiseOrValue 115 | ] 116 | ): string; 117 | encodeFunctionData( 118 | functionFragment: "setTTL", 119 | values: [PromiseOrValue, PromiseOrValue] 120 | ): string; 121 | encodeFunctionData( 122 | functionFragment: "ttl", 123 | values: [PromiseOrValue] 124 | ): string; 125 | 126 | decodeFunctionResult( 127 | functionFragment: "isApprovedForAll", 128 | data: BytesLike 129 | ): Result; 130 | decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; 131 | decodeFunctionResult( 132 | functionFragment: "recordExists", 133 | data: BytesLike 134 | ): Result; 135 | decodeFunctionResult(functionFragment: "resolver", data: BytesLike): Result; 136 | decodeFunctionResult( 137 | functionFragment: "setApprovalForAll", 138 | data: BytesLike 139 | ): Result; 140 | decodeFunctionResult(functionFragment: "setOwner", data: BytesLike): Result; 141 | decodeFunctionResult(functionFragment: "setRecord", data: BytesLike): Result; 142 | decodeFunctionResult( 143 | functionFragment: "setResolver", 144 | data: BytesLike 145 | ): Result; 146 | decodeFunctionResult( 147 | functionFragment: "setSubnodeOwner", 148 | data: BytesLike 149 | ): Result; 150 | decodeFunctionResult( 151 | functionFragment: "setSubnodeRecord", 152 | data: BytesLike 153 | ): Result; 154 | decodeFunctionResult(functionFragment: "setTTL", data: BytesLike): Result; 155 | decodeFunctionResult(functionFragment: "ttl", data: BytesLike): Result; 156 | 157 | events: { 158 | "ApprovalForAll(address,address,bool)": EventFragment; 159 | "NewOwner(bytes32,bytes32,address)": EventFragment; 160 | "NewResolver(bytes32,address)": EventFragment; 161 | "NewTTL(bytes32,uint64)": EventFragment; 162 | "Transfer(bytes32,address)": EventFragment; 163 | }; 164 | 165 | getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; 166 | getEvent(nameOrSignatureOrTopic: "NewOwner"): EventFragment; 167 | getEvent(nameOrSignatureOrTopic: "NewResolver"): EventFragment; 168 | getEvent(nameOrSignatureOrTopic: "NewTTL"): EventFragment; 169 | getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; 170 | } 171 | 172 | export interface ApprovalForAllEventObject { 173 | owner: string; 174 | operator: string; 175 | approved: boolean; 176 | } 177 | export type ApprovalForAllEvent = TypedEvent< 178 | [string, string, boolean], 179 | ApprovalForAllEventObject 180 | >; 181 | 182 | export type ApprovalForAllEventFilter = TypedEventFilter; 183 | 184 | export interface NewOwnerEventObject { 185 | node: string; 186 | label: string; 187 | owner: string; 188 | } 189 | export type NewOwnerEvent = TypedEvent< 190 | [string, string, string], 191 | NewOwnerEventObject 192 | >; 193 | 194 | export type NewOwnerEventFilter = TypedEventFilter; 195 | 196 | export interface NewResolverEventObject { 197 | node: string; 198 | resolver: string; 199 | } 200 | export type NewResolverEvent = TypedEvent< 201 | [string, string], 202 | NewResolverEventObject 203 | >; 204 | 205 | export type NewResolverEventFilter = TypedEventFilter; 206 | 207 | export interface NewTTLEventObject { 208 | node: string; 209 | ttl: BigNumber; 210 | } 211 | export type NewTTLEvent = TypedEvent<[string, BigNumber], NewTTLEventObject>; 212 | 213 | export type NewTTLEventFilter = TypedEventFilter; 214 | 215 | export interface TransferEventObject { 216 | node: string; 217 | owner: string; 218 | } 219 | export type TransferEvent = TypedEvent<[string, string], TransferEventObject>; 220 | 221 | export type TransferEventFilter = TypedEventFilter; 222 | 223 | export interface INSRegistry extends BaseContract { 224 | connect(signerOrProvider: Signer | Provider | string): this; 225 | attach(addressOrName: string): this; 226 | deployed(): Promise; 227 | 228 | interface: INSRegistryInterface; 229 | 230 | queryFilter( 231 | event: TypedEventFilter, 232 | fromBlockOrBlockhash?: string | number | undefined, 233 | toBlock?: string | number | undefined 234 | ): Promise>; 235 | 236 | listeners( 237 | eventFilter?: TypedEventFilter 238 | ): Array>; 239 | listeners(eventName?: string): Array; 240 | removeAllListeners( 241 | eventFilter: TypedEventFilter 242 | ): this; 243 | removeAllListeners(eventName?: string): this; 244 | off: OnEvent; 245 | on: OnEvent; 246 | once: OnEvent; 247 | removeListener: OnEvent; 248 | 249 | functions: { 250 | isApprovedForAll( 251 | _owner: PromiseOrValue, 252 | _operator: PromiseOrValue, 253 | overrides?: CallOverrides 254 | ): Promise<[boolean]>; 255 | 256 | owner( 257 | node: PromiseOrValue, 258 | overrides?: CallOverrides 259 | ): Promise<[string]>; 260 | 261 | recordExists( 262 | node: PromiseOrValue, 263 | overrides?: CallOverrides 264 | ): Promise<[boolean]>; 265 | 266 | resolver( 267 | node: PromiseOrValue, 268 | overrides?: CallOverrides 269 | ): Promise<[string]>; 270 | 271 | setApprovalForAll( 272 | operator: PromiseOrValue, 273 | approved: PromiseOrValue, 274 | overrides?: Overrides & { from?: PromiseOrValue } 275 | ): Promise; 276 | 277 | setOwner( 278 | _node: PromiseOrValue, 279 | _owner: PromiseOrValue, 280 | overrides?: Overrides & { from?: PromiseOrValue } 281 | ): Promise; 282 | 283 | setRecord( 284 | _node: PromiseOrValue, 285 | _owner: PromiseOrValue, 286 | _resolver: PromiseOrValue, 287 | _ttl: PromiseOrValue, 288 | overrides?: Overrides & { from?: PromiseOrValue } 289 | ): Promise; 290 | 291 | setResolver( 292 | _node: PromiseOrValue, 293 | _resolver: PromiseOrValue, 294 | overrides?: Overrides & { from?: PromiseOrValue } 295 | ): Promise; 296 | 297 | setSubnodeOwner( 298 | _node: PromiseOrValue, 299 | _label: PromiseOrValue, 300 | _owner: PromiseOrValue, 301 | overrides?: Overrides & { from?: PromiseOrValue } 302 | ): Promise; 303 | 304 | setSubnodeRecord( 305 | _node: PromiseOrValue, 306 | _label: PromiseOrValue, 307 | _owner: PromiseOrValue, 308 | _resolver: PromiseOrValue, 309 | _ttl: PromiseOrValue, 310 | overrides?: Overrides & { from?: PromiseOrValue } 311 | ): Promise; 312 | 313 | setTTL( 314 | _node: PromiseOrValue, 315 | _ttl: PromiseOrValue, 316 | overrides?: Overrides & { from?: PromiseOrValue } 317 | ): Promise; 318 | 319 | ttl( 320 | node: PromiseOrValue, 321 | overrides?: CallOverrides 322 | ): Promise<[BigNumber]>; 323 | }; 324 | 325 | isApprovedForAll( 326 | _owner: PromiseOrValue, 327 | _operator: PromiseOrValue, 328 | overrides?: CallOverrides 329 | ): Promise; 330 | 331 | owner( 332 | node: PromiseOrValue, 333 | overrides?: CallOverrides 334 | ): Promise; 335 | 336 | recordExists( 337 | node: PromiseOrValue, 338 | overrides?: CallOverrides 339 | ): Promise; 340 | 341 | resolver( 342 | node: PromiseOrValue, 343 | overrides?: CallOverrides 344 | ): Promise; 345 | 346 | setApprovalForAll( 347 | operator: PromiseOrValue, 348 | approved: PromiseOrValue, 349 | overrides?: Overrides & { from?: PromiseOrValue } 350 | ): Promise; 351 | 352 | setOwner( 353 | _node: PromiseOrValue, 354 | _owner: PromiseOrValue, 355 | overrides?: Overrides & { from?: PromiseOrValue } 356 | ): Promise; 357 | 358 | setRecord( 359 | _node: PromiseOrValue, 360 | _owner: PromiseOrValue, 361 | _resolver: PromiseOrValue, 362 | _ttl: PromiseOrValue, 363 | overrides?: Overrides & { from?: PromiseOrValue } 364 | ): Promise; 365 | 366 | setResolver( 367 | _node: PromiseOrValue, 368 | _resolver: PromiseOrValue, 369 | overrides?: Overrides & { from?: PromiseOrValue } 370 | ): Promise; 371 | 372 | setSubnodeOwner( 373 | _node: PromiseOrValue, 374 | _label: PromiseOrValue, 375 | _owner: PromiseOrValue, 376 | overrides?: Overrides & { from?: PromiseOrValue } 377 | ): Promise; 378 | 379 | setSubnodeRecord( 380 | _node: PromiseOrValue, 381 | _label: PromiseOrValue, 382 | _owner: PromiseOrValue, 383 | _resolver: PromiseOrValue, 384 | _ttl: PromiseOrValue, 385 | overrides?: Overrides & { from?: PromiseOrValue } 386 | ): Promise; 387 | 388 | setTTL( 389 | _node: PromiseOrValue, 390 | _ttl: PromiseOrValue, 391 | overrides?: Overrides & { from?: PromiseOrValue } 392 | ): Promise; 393 | 394 | ttl( 395 | node: PromiseOrValue, 396 | overrides?: CallOverrides 397 | ): Promise; 398 | 399 | callStatic: { 400 | isApprovedForAll( 401 | _owner: PromiseOrValue, 402 | _operator: PromiseOrValue, 403 | overrides?: CallOverrides 404 | ): Promise; 405 | 406 | owner( 407 | node: PromiseOrValue, 408 | overrides?: CallOverrides 409 | ): Promise; 410 | 411 | recordExists( 412 | node: PromiseOrValue, 413 | overrides?: CallOverrides 414 | ): Promise; 415 | 416 | resolver( 417 | node: PromiseOrValue, 418 | overrides?: CallOverrides 419 | ): Promise; 420 | 421 | setApprovalForAll( 422 | operator: PromiseOrValue, 423 | approved: PromiseOrValue, 424 | overrides?: CallOverrides 425 | ): Promise; 426 | 427 | setOwner( 428 | _node: PromiseOrValue, 429 | _owner: PromiseOrValue, 430 | overrides?: CallOverrides 431 | ): Promise; 432 | 433 | setRecord( 434 | _node: PromiseOrValue, 435 | _owner: PromiseOrValue, 436 | _resolver: PromiseOrValue, 437 | _ttl: PromiseOrValue, 438 | overrides?: CallOverrides 439 | ): Promise; 440 | 441 | setResolver( 442 | _node: PromiseOrValue, 443 | _resolver: PromiseOrValue, 444 | overrides?: CallOverrides 445 | ): Promise; 446 | 447 | setSubnodeOwner( 448 | _node: PromiseOrValue, 449 | _label: PromiseOrValue, 450 | _owner: PromiseOrValue, 451 | overrides?: CallOverrides 452 | ): Promise; 453 | 454 | setSubnodeRecord( 455 | _node: PromiseOrValue, 456 | _label: PromiseOrValue, 457 | _owner: PromiseOrValue, 458 | _resolver: PromiseOrValue, 459 | _ttl: PromiseOrValue, 460 | overrides?: CallOverrides 461 | ): Promise; 462 | 463 | setTTL( 464 | _node: PromiseOrValue, 465 | _ttl: PromiseOrValue, 466 | overrides?: CallOverrides 467 | ): Promise; 468 | 469 | ttl( 470 | node: PromiseOrValue, 471 | overrides?: CallOverrides 472 | ): Promise; 473 | }; 474 | 475 | filters: { 476 | "ApprovalForAll(address,address,bool)"( 477 | owner?: PromiseOrValue | null, 478 | operator?: PromiseOrValue | null, 479 | approved?: null 480 | ): ApprovalForAllEventFilter; 481 | ApprovalForAll( 482 | owner?: PromiseOrValue | null, 483 | operator?: PromiseOrValue | null, 484 | approved?: null 485 | ): ApprovalForAllEventFilter; 486 | 487 | "NewOwner(bytes32,bytes32,address)"( 488 | node?: PromiseOrValue | null, 489 | label?: PromiseOrValue | null, 490 | owner?: null 491 | ): NewOwnerEventFilter; 492 | NewOwner( 493 | node?: PromiseOrValue | null, 494 | label?: PromiseOrValue | null, 495 | owner?: null 496 | ): NewOwnerEventFilter; 497 | 498 | "NewResolver(bytes32,address)"( 499 | node?: PromiseOrValue | null, 500 | resolver?: null 501 | ): NewResolverEventFilter; 502 | NewResolver( 503 | node?: PromiseOrValue | null, 504 | resolver?: null 505 | ): NewResolverEventFilter; 506 | 507 | "NewTTL(bytes32,uint64)"( 508 | node?: PromiseOrValue | null, 509 | ttl?: null 510 | ): NewTTLEventFilter; 511 | NewTTL( 512 | node?: PromiseOrValue | null, 513 | ttl?: null 514 | ): NewTTLEventFilter; 515 | 516 | "Transfer(bytes32,address)"( 517 | node?: PromiseOrValue | null, 518 | owner?: null 519 | ): TransferEventFilter; 520 | Transfer( 521 | node?: PromiseOrValue | null, 522 | owner?: null 523 | ): TransferEventFilter; 524 | }; 525 | 526 | estimateGas: { 527 | isApprovedForAll( 528 | _owner: PromiseOrValue, 529 | _operator: PromiseOrValue, 530 | overrides?: CallOverrides 531 | ): Promise; 532 | 533 | owner( 534 | node: PromiseOrValue, 535 | overrides?: CallOverrides 536 | ): Promise; 537 | 538 | recordExists( 539 | node: PromiseOrValue, 540 | overrides?: CallOverrides 541 | ): Promise; 542 | 543 | resolver( 544 | node: PromiseOrValue, 545 | overrides?: CallOverrides 546 | ): Promise; 547 | 548 | setApprovalForAll( 549 | operator: PromiseOrValue, 550 | approved: PromiseOrValue, 551 | overrides?: Overrides & { from?: PromiseOrValue } 552 | ): Promise; 553 | 554 | setOwner( 555 | _node: PromiseOrValue, 556 | _owner: PromiseOrValue, 557 | overrides?: Overrides & { from?: PromiseOrValue } 558 | ): Promise; 559 | 560 | setRecord( 561 | _node: PromiseOrValue, 562 | _owner: PromiseOrValue, 563 | _resolver: PromiseOrValue, 564 | _ttl: PromiseOrValue, 565 | overrides?: Overrides & { from?: PromiseOrValue } 566 | ): Promise; 567 | 568 | setResolver( 569 | _node: PromiseOrValue, 570 | _resolver: PromiseOrValue, 571 | overrides?: Overrides & { from?: PromiseOrValue } 572 | ): Promise; 573 | 574 | setSubnodeOwner( 575 | _node: PromiseOrValue, 576 | _label: PromiseOrValue, 577 | _owner: PromiseOrValue, 578 | overrides?: Overrides & { from?: PromiseOrValue } 579 | ): Promise; 580 | 581 | setSubnodeRecord( 582 | _node: PromiseOrValue, 583 | _label: PromiseOrValue, 584 | _owner: PromiseOrValue, 585 | _resolver: PromiseOrValue, 586 | _ttl: PromiseOrValue, 587 | overrides?: Overrides & { from?: PromiseOrValue } 588 | ): Promise; 589 | 590 | setTTL( 591 | _node: PromiseOrValue, 592 | _ttl: PromiseOrValue, 593 | overrides?: Overrides & { from?: PromiseOrValue } 594 | ): Promise; 595 | 596 | ttl( 597 | node: PromiseOrValue, 598 | overrides?: CallOverrides 599 | ): Promise; 600 | }; 601 | 602 | populateTransaction: { 603 | isApprovedForAll( 604 | _owner: PromiseOrValue, 605 | _operator: PromiseOrValue, 606 | overrides?: CallOverrides 607 | ): Promise; 608 | 609 | owner( 610 | node: PromiseOrValue, 611 | overrides?: CallOverrides 612 | ): Promise; 613 | 614 | recordExists( 615 | node: PromiseOrValue, 616 | overrides?: CallOverrides 617 | ): Promise; 618 | 619 | resolver( 620 | node: PromiseOrValue, 621 | overrides?: CallOverrides 622 | ): Promise; 623 | 624 | setApprovalForAll( 625 | operator: PromiseOrValue, 626 | approved: PromiseOrValue, 627 | overrides?: Overrides & { from?: PromiseOrValue } 628 | ): Promise; 629 | 630 | setOwner( 631 | _node: PromiseOrValue, 632 | _owner: PromiseOrValue, 633 | overrides?: Overrides & { from?: PromiseOrValue } 634 | ): Promise; 635 | 636 | setRecord( 637 | _node: PromiseOrValue, 638 | _owner: PromiseOrValue, 639 | _resolver: PromiseOrValue, 640 | _ttl: PromiseOrValue, 641 | overrides?: Overrides & { from?: PromiseOrValue } 642 | ): Promise; 643 | 644 | setResolver( 645 | _node: PromiseOrValue, 646 | _resolver: PromiseOrValue, 647 | overrides?: Overrides & { from?: PromiseOrValue } 648 | ): Promise; 649 | 650 | setSubnodeOwner( 651 | _node: PromiseOrValue, 652 | _label: PromiseOrValue, 653 | _owner: PromiseOrValue, 654 | overrides?: Overrides & { from?: PromiseOrValue } 655 | ): Promise; 656 | 657 | setSubnodeRecord( 658 | _node: PromiseOrValue, 659 | _label: PromiseOrValue, 660 | _owner: PromiseOrValue, 661 | _resolver: PromiseOrValue, 662 | _ttl: PromiseOrValue, 663 | overrides?: Overrides & { from?: PromiseOrValue } 664 | ): Promise; 665 | 666 | setTTL( 667 | _node: PromiseOrValue, 668 | _ttl: PromiseOrValue, 669 | overrides?: Overrides & { from?: PromiseOrValue } 670 | ): Promise; 671 | 672 | ttl( 673 | node: PromiseOrValue, 674 | overrides?: CallOverrides 675 | ): Promise; 676 | }; 677 | } 678 | -------------------------------------------------------------------------------- /src/contracts/INSRegistry__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; 5 | import type { Provider, TransactionRequest } from "@ethersproject/providers"; 6 | import type { PromiseOrValue } from "./common"; 7 | import type { 8 | INSRegistry, 9 | INSRegistryInterface, 10 | } from "./INSRegistry"; 11 | 12 | const _abi = [ 13 | { 14 | inputs: [], 15 | stateMutability: "nonpayable", 16 | type: "constructor", 17 | }, 18 | { 19 | anonymous: false, 20 | inputs: [ 21 | { 22 | indexed: true, 23 | internalType: "address", 24 | name: "owner", 25 | type: "address", 26 | }, 27 | { 28 | indexed: true, 29 | internalType: "address", 30 | name: "operator", 31 | type: "address", 32 | }, 33 | { 34 | indexed: false, 35 | internalType: "bool", 36 | name: "approved", 37 | type: "bool", 38 | }, 39 | ], 40 | name: "ApprovalForAll", 41 | type: "event", 42 | }, 43 | { 44 | anonymous: false, 45 | inputs: [ 46 | { 47 | indexed: true, 48 | internalType: "bytes32", 49 | name: "node", 50 | type: "bytes32", 51 | }, 52 | { 53 | indexed: true, 54 | internalType: "bytes32", 55 | name: "label", 56 | type: "bytes32", 57 | }, 58 | { 59 | indexed: false, 60 | internalType: "address", 61 | name: "owner", 62 | type: "address", 63 | }, 64 | ], 65 | name: "NewOwner", 66 | type: "event", 67 | }, 68 | { 69 | anonymous: false, 70 | inputs: [ 71 | { 72 | indexed: true, 73 | internalType: "bytes32", 74 | name: "node", 75 | type: "bytes32", 76 | }, 77 | { 78 | indexed: false, 79 | internalType: "address", 80 | name: "resolver", 81 | type: "address", 82 | }, 83 | ], 84 | name: "NewResolver", 85 | type: "event", 86 | }, 87 | { 88 | anonymous: false, 89 | inputs: [ 90 | { 91 | indexed: true, 92 | internalType: "bytes32", 93 | name: "node", 94 | type: "bytes32", 95 | }, 96 | { 97 | indexed: false, 98 | internalType: "uint64", 99 | name: "ttl", 100 | type: "uint64", 101 | }, 102 | ], 103 | name: "NewTTL", 104 | type: "event", 105 | }, 106 | { 107 | anonymous: false, 108 | inputs: [ 109 | { 110 | indexed: true, 111 | internalType: "bytes32", 112 | name: "node", 113 | type: "bytes32", 114 | }, 115 | { 116 | indexed: false, 117 | internalType: "address", 118 | name: "owner", 119 | type: "address", 120 | }, 121 | ], 122 | name: "Transfer", 123 | type: "event", 124 | }, 125 | { 126 | inputs: [ 127 | { 128 | internalType: "address", 129 | name: "_owner", 130 | type: "address", 131 | }, 132 | { 133 | internalType: "address", 134 | name: "_operator", 135 | type: "address", 136 | }, 137 | ], 138 | name: "isApprovedForAll", 139 | outputs: [ 140 | { 141 | internalType: "bool", 142 | name: "", 143 | type: "bool", 144 | }, 145 | ], 146 | stateMutability: "view", 147 | type: "function", 148 | }, 149 | { 150 | inputs: [ 151 | { 152 | internalType: "bytes32", 153 | name: "node", 154 | type: "bytes32", 155 | }, 156 | ], 157 | name: "owner", 158 | outputs: [ 159 | { 160 | internalType: "address", 161 | name: "", 162 | type: "address", 163 | }, 164 | ], 165 | stateMutability: "view", 166 | type: "function", 167 | }, 168 | { 169 | inputs: [ 170 | { 171 | internalType: "bytes32", 172 | name: "node", 173 | type: "bytes32", 174 | }, 175 | ], 176 | name: "recordExists", 177 | outputs: [ 178 | { 179 | internalType: "bool", 180 | name: "", 181 | type: "bool", 182 | }, 183 | ], 184 | stateMutability: "view", 185 | type: "function", 186 | }, 187 | { 188 | inputs: [ 189 | { 190 | internalType: "bytes32", 191 | name: "node", 192 | type: "bytes32", 193 | }, 194 | ], 195 | name: "resolver", 196 | outputs: [ 197 | { 198 | internalType: "address", 199 | name: "", 200 | type: "address", 201 | }, 202 | ], 203 | stateMutability: "view", 204 | type: "function", 205 | }, 206 | { 207 | inputs: [ 208 | { 209 | internalType: "address", 210 | name: "operator", 211 | type: "address", 212 | }, 213 | { 214 | internalType: "bool", 215 | name: "approved", 216 | type: "bool", 217 | }, 218 | ], 219 | name: "setApprovalForAll", 220 | outputs: [], 221 | stateMutability: "nonpayable", 222 | type: "function", 223 | }, 224 | { 225 | inputs: [ 226 | { 227 | internalType: "bytes32", 228 | name: "_node", 229 | type: "bytes32", 230 | }, 231 | { 232 | internalType: "address", 233 | name: "_owner", 234 | type: "address", 235 | }, 236 | ], 237 | name: "setOwner", 238 | outputs: [], 239 | stateMutability: "nonpayable", 240 | type: "function", 241 | }, 242 | { 243 | inputs: [ 244 | { 245 | internalType: "bytes32", 246 | name: "_node", 247 | type: "bytes32", 248 | }, 249 | { 250 | internalType: "address", 251 | name: "_owner", 252 | type: "address", 253 | }, 254 | { 255 | internalType: "address", 256 | name: "_resolver", 257 | type: "address", 258 | }, 259 | { 260 | internalType: "uint64", 261 | name: "_ttl", 262 | type: "uint64", 263 | }, 264 | ], 265 | name: "setRecord", 266 | outputs: [], 267 | stateMutability: "nonpayable", 268 | type: "function", 269 | }, 270 | { 271 | inputs: [ 272 | { 273 | internalType: "bytes32", 274 | name: "_node", 275 | type: "bytes32", 276 | }, 277 | { 278 | internalType: "address", 279 | name: "_resolver", 280 | type: "address", 281 | }, 282 | ], 283 | name: "setResolver", 284 | outputs: [], 285 | stateMutability: "nonpayable", 286 | type: "function", 287 | }, 288 | { 289 | inputs: [ 290 | { 291 | internalType: "bytes32", 292 | name: "_node", 293 | type: "bytes32", 294 | }, 295 | { 296 | internalType: "bytes32", 297 | name: "_label", 298 | type: "bytes32", 299 | }, 300 | { 301 | internalType: "address", 302 | name: "_owner", 303 | type: "address", 304 | }, 305 | ], 306 | name: "setSubnodeOwner", 307 | outputs: [ 308 | { 309 | internalType: "bytes32", 310 | name: "", 311 | type: "bytes32", 312 | }, 313 | ], 314 | stateMutability: "nonpayable", 315 | type: "function", 316 | }, 317 | { 318 | inputs: [ 319 | { 320 | internalType: "bytes32", 321 | name: "_node", 322 | type: "bytes32", 323 | }, 324 | { 325 | internalType: "bytes32", 326 | name: "_label", 327 | type: "bytes32", 328 | }, 329 | { 330 | internalType: "address", 331 | name: "_owner", 332 | type: "address", 333 | }, 334 | { 335 | internalType: "address", 336 | name: "_resolver", 337 | type: "address", 338 | }, 339 | { 340 | internalType: "uint64", 341 | name: "_ttl", 342 | type: "uint64", 343 | }, 344 | ], 345 | name: "setSubnodeRecord", 346 | outputs: [], 347 | stateMutability: "nonpayable", 348 | type: "function", 349 | }, 350 | { 351 | inputs: [ 352 | { 353 | internalType: "bytes32", 354 | name: "_node", 355 | type: "bytes32", 356 | }, 357 | { 358 | internalType: "uint64", 359 | name: "_ttl", 360 | type: "uint64", 361 | }, 362 | ], 363 | name: "setTTL", 364 | outputs: [], 365 | stateMutability: "nonpayable", 366 | type: "function", 367 | }, 368 | { 369 | inputs: [ 370 | { 371 | internalType: "bytes32", 372 | name: "node", 373 | type: "bytes32", 374 | }, 375 | ], 376 | name: "ttl", 377 | outputs: [ 378 | { 379 | internalType: "uint64", 380 | name: "", 381 | type: "uint64", 382 | }, 383 | ], 384 | stateMutability: "view", 385 | type: "function", 386 | }, 387 | ] as const; 388 | 389 | const _bytecode = 390 | "0x608060405234801561001057600080fd5b5060008080526020527fad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb580546001600160a01b03191633179055610a43806100596000396000f3fe608060405234801561001057600080fd5b50600436106100d45760003560e01c80635b0fc9c311610081578063cf4088231161005b578063cf40882314610204578063e985e9c514610217578063f79fe5381461026357600080fd5b80635b0fc9c3146101cb5780635ef2c7f0146101de578063a22cb465146101f157600080fd5b806314ab9038116100b257806314ab90381461015657806316a25cbd1461016b5780631896f70a146101b857600080fd5b80630178b8bf146100d957806302571be31461012257806306ab592314610135575b600080fd5b6101056100e7366004610832565b6000908152602081905260409020600101546001600160a01b031690565b6040516001600160a01b0390911681526020015b60405180910390f35b610105610130366004610832565b61028e565b610148610143366004610867565b6102bc565b604051908152602001610119565b6101696101643660046108b4565b6103bc565b005b61019f610179366004610832565b600090815260208190526040902060010154600160a01b900467ffffffffffffffff1690565b60405167ffffffffffffffff9091168152602001610119565b6101696101c63660046108e0565b6104a3565b6101696101d93660046108e0565b610575565b6101696101ec366004610903565b610641565b6101696101ff36600461095a565b610663565b610169610212366004610996565b6106cf565b6102536102253660046109e3565b6001600160a01b03918216600090815260016020908152604080832093909416825291909152205460ff1690565b6040519015158152602001610119565b610253610271366004610832565b6000908152602081905260409020546001600160a01b0316151590565b6000818152602081905260408120546001600160a01b03163081036102b65750600092915050565b92915050565b60008381526020819052604081205484906001600160a01b03163381148061030757506001600160a01b038116600090815260016020908152604080832033845290915290205460ff165b61031057600080fd5b604080516020810188905290810186905260009060600160408051601f1981840301815291815281516020928301206000818152928390529120805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03881617905590506040516001600160a01b0386168152869088907fce0457fe73731f824cc272376169235128c118b49d344817417c6d108d155e829060200160405180910390a39695505050505050565b60008281526020819052604090205482906001600160a01b03163381148061040757506001600160a01b038116600090815260016020908152604080832033845290915290205460ff165b61041057600080fd5b60405167ffffffffffffffff8416815284907f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa689060200160405180910390a25050600091825260208290526040909120600101805467ffffffffffffffff909216600160a01b027fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60008281526020819052604090205482906001600160a01b0316338114806104ee57506001600160a01b038116600090815260016020908152604080832033845290915290205460ff165b6104f757600080fd5b6040516001600160a01b038416815284907f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a09060200160405180910390a25050600091825260208290526040909120600101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055565b60008281526020819052604090205482906001600160a01b0316338114806105c057506001600160a01b038116600090815260016020908152604080832033845290915290205460ff165b6105c957600080fd5b6000848152602081905260409020805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0385161790556040516001600160a01b038416815284907fd4735d920b0f87494915f556dd9b54c8f309026070caea5c737245152564d2669060200160405180910390a250505050565b600061064e8686866102bc565b905061065b8184846106ea565b505050505050565b3360008181526001602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6106d98484610575565b6106e48483836106ea565b50505050565b6000838152602081905260409020600101546001600160a01b0383811691161461077d5760008381526020818152604091829020600101805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b038616908117909155915191825284917f335721b01866dc23fbee8b6b2c7b1e14d6f05c28cd35a2c934239f94095602a0910160405180910390a25b60008381526020819052604090206001015467ffffffffffffffff828116600160a01b909204161461082d576000838152602081815260409182902060010180547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff16600160a01b67ffffffffffffffff861690810291909117909155915191825284917f1d4f9bbfc9cab89d66e1a1562f2233ccbf1308cb4f63de2ead5787adddb8fa68910160405180910390a25b505050565b60006020828403121561084457600080fd5b5035919050565b80356001600160a01b038116811461086257600080fd5b919050565b60008060006060848603121561087c57600080fd5b83359250602084013591506108936040850161084b565b90509250925092565b803567ffffffffffffffff8116811461086257600080fd5b600080604083850312156108c757600080fd5b823591506108d76020840161089c565b90509250929050565b600080604083850312156108f357600080fd5b823591506108d76020840161084b565b600080600080600060a0868803121561091b57600080fd5b85359450602086013593506109326040870161084b565b92506109406060870161084b565b915061094e6080870161089c565b90509295509295909350565b6000806040838503121561096d57600080fd5b6109768361084b565b91506020830135801515811461098b57600080fd5b809150509250929050565b600080600080608085870312156109ac57600080fd5b843593506109bc6020860161084b565b92506109ca6040860161084b565b91506109d86060860161089c565b905092959194509250565b600080604083850312156109f657600080fd5b6109ff8361084b565b91506108d76020840161084b56fea2646970667358221220727633b2787ecf0003f2fba200cfe4cd946eaf7a0905d06aeae4e95c1542d90a64736f6c63430008110033"; 391 | 392 | type INSRegistryConstructorParams = 393 | | [signer?: Signer] 394 | | ConstructorParameters; 395 | 396 | const isSuperArgs = ( 397 | xs: INSRegistryConstructorParams 398 | ): xs is ConstructorParameters => xs.length > 1; 399 | 400 | export class INSRegistry__factory extends ContractFactory { 401 | constructor(...args: INSRegistryConstructorParams) { 402 | if (isSuperArgs(args)) { 403 | super(...args); 404 | } else { 405 | super(_abi, _bytecode, args[0]); 406 | } 407 | } 408 | 409 | override deploy( 410 | overrides?: Overrides & { from?: PromiseOrValue } 411 | ): Promise { 412 | return super.deploy(overrides || {}) as Promise; 413 | } 414 | override getDeployTransaction( 415 | overrides?: Overrides & { from?: PromiseOrValue } 416 | ): TransactionRequest { 417 | return super.getDeployTransaction(overrides || {}); 418 | } 419 | override attach(address: string): INSRegistry { 420 | return super.attach(address) as INSRegistry; 421 | } 422 | override connect(signer: Signer): INSRegistry__factory { 423 | return super.connect(signer) as INSRegistry__factory; 424 | } 425 | 426 | static readonly bytecode = _bytecode; 427 | static readonly abi = _abi; 428 | static createInterface(): INSRegistryInterface { 429 | return new utils.Interface(_abi) as INSRegistryInterface; 430 | } 431 | static connect( 432 | address: string, 433 | signerOrProvider: Signer | Provider 434 | ): INSRegistry { 435 | return new Contract(address, _abi, signerOrProvider) as INSRegistry; 436 | } 437 | } 438 | -------------------------------------------------------------------------------- /src/contracts/PublicResolver__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; 5 | import type { Provider, TransactionRequest } from "@ethersproject/providers"; 6 | import type { PromiseOrValue } from "./common"; 7 | import type { 8 | PublicResolver, 9 | PublicResolverInterface, 10 | } from "./PublicResolver"; 11 | 12 | const _abi = [ 13 | { 14 | inputs: [ 15 | { 16 | internalType: "contract INS", 17 | name: "_ins", 18 | type: "address", 19 | }, 20 | { 21 | internalType: "contract INameWrapper", 22 | name: "wrapperAddress", 23 | type: "address", 24 | }, 25 | { 26 | internalType: "address", 27 | name: "_trustedETHController", 28 | type: "address", 29 | }, 30 | { 31 | internalType: "address", 32 | name: "_trustedReverseRegistrar", 33 | type: "address", 34 | }, 35 | ], 36 | stateMutability: "nonpayable", 37 | type: "constructor", 38 | }, 39 | { 40 | anonymous: false, 41 | inputs: [ 42 | { 43 | indexed: true, 44 | internalType: "bytes32", 45 | name: "node", 46 | type: "bytes32", 47 | }, 48 | { 49 | indexed: true, 50 | internalType: "uint256", 51 | name: "contentType", 52 | type: "uint256", 53 | }, 54 | ], 55 | name: "ABIChanged", 56 | type: "event", 57 | }, 58 | { 59 | anonymous: false, 60 | inputs: [ 61 | { 62 | indexed: true, 63 | internalType: "bytes32", 64 | name: "node", 65 | type: "bytes32", 66 | }, 67 | { 68 | indexed: false, 69 | internalType: "address", 70 | name: "a", 71 | type: "address", 72 | }, 73 | ], 74 | name: "AddrChanged", 75 | type: "event", 76 | }, 77 | { 78 | anonymous: false, 79 | inputs: [ 80 | { 81 | indexed: true, 82 | internalType: "bytes32", 83 | name: "node", 84 | type: "bytes32", 85 | }, 86 | { 87 | indexed: false, 88 | internalType: "uint256", 89 | name: "coinType", 90 | type: "uint256", 91 | }, 92 | { 93 | indexed: false, 94 | internalType: "bytes", 95 | name: "newAddress", 96 | type: "bytes", 97 | }, 98 | ], 99 | name: "AddressChanged", 100 | type: "event", 101 | }, 102 | { 103 | anonymous: false, 104 | inputs: [ 105 | { 106 | indexed: true, 107 | internalType: "address", 108 | name: "owner", 109 | type: "address", 110 | }, 111 | { 112 | indexed: true, 113 | internalType: "address", 114 | name: "operator", 115 | type: "address", 116 | }, 117 | { 118 | indexed: false, 119 | internalType: "bool", 120 | name: "approved", 121 | type: "bool", 122 | }, 123 | ], 124 | name: "ApprovalForAll", 125 | type: "event", 126 | }, 127 | { 128 | anonymous: false, 129 | inputs: [ 130 | { 131 | indexed: false, 132 | internalType: "address", 133 | name: "owner", 134 | type: "address", 135 | }, 136 | { 137 | indexed: true, 138 | internalType: "bytes32", 139 | name: "node", 140 | type: "bytes32", 141 | }, 142 | { 143 | indexed: true, 144 | internalType: "address", 145 | name: "delegate", 146 | type: "address", 147 | }, 148 | { 149 | indexed: true, 150 | internalType: "bool", 151 | name: "approved", 152 | type: "bool", 153 | }, 154 | ], 155 | name: "Approved", 156 | type: "event", 157 | }, 158 | { 159 | anonymous: false, 160 | inputs: [ 161 | { 162 | indexed: true, 163 | internalType: "bytes32", 164 | name: "node", 165 | type: "bytes32", 166 | }, 167 | { 168 | indexed: false, 169 | internalType: "bytes", 170 | name: "hash", 171 | type: "bytes", 172 | }, 173 | ], 174 | name: "ContenthashChanged", 175 | type: "event", 176 | }, 177 | { 178 | anonymous: false, 179 | inputs: [ 180 | { 181 | indexed: true, 182 | internalType: "bytes32", 183 | name: "node", 184 | type: "bytes32", 185 | }, 186 | { 187 | indexed: true, 188 | internalType: "bytes4", 189 | name: "interfaceID", 190 | type: "bytes4", 191 | }, 192 | { 193 | indexed: false, 194 | internalType: "address", 195 | name: "implementer", 196 | type: "address", 197 | }, 198 | ], 199 | name: "InterfaceChanged", 200 | type: "event", 201 | }, 202 | { 203 | anonymous: false, 204 | inputs: [ 205 | { 206 | indexed: true, 207 | internalType: "bytes32", 208 | name: "node", 209 | type: "bytes32", 210 | }, 211 | { 212 | indexed: false, 213 | internalType: "string", 214 | name: "name", 215 | type: "string", 216 | }, 217 | ], 218 | name: "NameChanged", 219 | type: "event", 220 | }, 221 | { 222 | anonymous: false, 223 | inputs: [ 224 | { 225 | indexed: true, 226 | internalType: "bytes32", 227 | name: "node", 228 | type: "bytes32", 229 | }, 230 | { 231 | indexed: false, 232 | internalType: "bytes32", 233 | name: "x", 234 | type: "bytes32", 235 | }, 236 | { 237 | indexed: false, 238 | internalType: "bytes32", 239 | name: "y", 240 | type: "bytes32", 241 | }, 242 | ], 243 | name: "PubkeyChanged", 244 | type: "event", 245 | }, 246 | { 247 | anonymous: false, 248 | inputs: [ 249 | { 250 | indexed: true, 251 | internalType: "bytes32", 252 | name: "node", 253 | type: "bytes32", 254 | }, 255 | { 256 | indexed: true, 257 | internalType: "string", 258 | name: "indexedKey", 259 | type: "string", 260 | }, 261 | { 262 | indexed: false, 263 | internalType: "string", 264 | name: "key", 265 | type: "string", 266 | }, 267 | { 268 | indexed: false, 269 | internalType: "string", 270 | name: "value", 271 | type: "string", 272 | }, 273 | ], 274 | name: "TextChanged", 275 | type: "event", 276 | }, 277 | { 278 | anonymous: false, 279 | inputs: [ 280 | { 281 | indexed: true, 282 | internalType: "bytes32", 283 | name: "node", 284 | type: "bytes32", 285 | }, 286 | { 287 | indexed: false, 288 | internalType: "uint64", 289 | name: "newVersion", 290 | type: "uint64", 291 | }, 292 | ], 293 | name: "VersionChanged", 294 | type: "event", 295 | }, 296 | { 297 | inputs: [ 298 | { 299 | internalType: "bytes32", 300 | name: "node", 301 | type: "bytes32", 302 | }, 303 | { 304 | internalType: "uint256", 305 | name: "contentTypes", 306 | type: "uint256", 307 | }, 308 | ], 309 | name: "ABI", 310 | outputs: [ 311 | { 312 | internalType: "uint256", 313 | name: "", 314 | type: "uint256", 315 | }, 316 | { 317 | internalType: "bytes", 318 | name: "", 319 | type: "bytes", 320 | }, 321 | ], 322 | stateMutability: "view", 323 | type: "function", 324 | }, 325 | { 326 | inputs: [ 327 | { 328 | internalType: "bytes32", 329 | name: "node", 330 | type: "bytes32", 331 | }, 332 | ], 333 | name: "addr", 334 | outputs: [ 335 | { 336 | internalType: "address payable", 337 | name: "", 338 | type: "address", 339 | }, 340 | ], 341 | stateMutability: "view", 342 | type: "function", 343 | }, 344 | { 345 | inputs: [ 346 | { 347 | internalType: "bytes32", 348 | name: "node", 349 | type: "bytes32", 350 | }, 351 | { 352 | internalType: "uint256", 353 | name: "coinType", 354 | type: "uint256", 355 | }, 356 | ], 357 | name: "addr", 358 | outputs: [ 359 | { 360 | internalType: "bytes", 361 | name: "", 362 | type: "bytes", 363 | }, 364 | ], 365 | stateMutability: "view", 366 | type: "function", 367 | }, 368 | { 369 | inputs: [ 370 | { 371 | internalType: "bytes32", 372 | name: "node", 373 | type: "bytes32", 374 | }, 375 | { 376 | internalType: "address", 377 | name: "delegate", 378 | type: "address", 379 | }, 380 | { 381 | internalType: "bool", 382 | name: "approved", 383 | type: "bool", 384 | }, 385 | ], 386 | name: "approve", 387 | outputs: [], 388 | stateMutability: "nonpayable", 389 | type: "function", 390 | }, 391 | { 392 | inputs: [ 393 | { 394 | internalType: "bytes32", 395 | name: "node", 396 | type: "bytes32", 397 | }, 398 | ], 399 | name: "clearRecords", 400 | outputs: [], 401 | stateMutability: "nonpayable", 402 | type: "function", 403 | }, 404 | { 405 | inputs: [ 406 | { 407 | internalType: "bytes32", 408 | name: "node", 409 | type: "bytes32", 410 | }, 411 | ], 412 | name: "contenthash", 413 | outputs: [ 414 | { 415 | internalType: "bytes", 416 | name: "", 417 | type: "bytes", 418 | }, 419 | ], 420 | stateMutability: "view", 421 | type: "function", 422 | }, 423 | { 424 | inputs: [ 425 | { 426 | internalType: "bytes32", 427 | name: "node", 428 | type: "bytes32", 429 | }, 430 | { 431 | internalType: "bytes4", 432 | name: "interfaceID", 433 | type: "bytes4", 434 | }, 435 | ], 436 | name: "interfaceImplementer", 437 | outputs: [ 438 | { 439 | internalType: "address", 440 | name: "", 441 | type: "address", 442 | }, 443 | ], 444 | stateMutability: "view", 445 | type: "function", 446 | }, 447 | { 448 | inputs: [ 449 | { 450 | internalType: "address", 451 | name: "owner", 452 | type: "address", 453 | }, 454 | { 455 | internalType: "bytes32", 456 | name: "node", 457 | type: "bytes32", 458 | }, 459 | { 460 | internalType: "address", 461 | name: "delegate", 462 | type: "address", 463 | }, 464 | ], 465 | name: "isApprovedFor", 466 | outputs: [ 467 | { 468 | internalType: "bool", 469 | name: "", 470 | type: "bool", 471 | }, 472 | ], 473 | stateMutability: "view", 474 | type: "function", 475 | }, 476 | { 477 | inputs: [ 478 | { 479 | internalType: "address", 480 | name: "account", 481 | type: "address", 482 | }, 483 | { 484 | internalType: "address", 485 | name: "operator", 486 | type: "address", 487 | }, 488 | ], 489 | name: "isApprovedForAll", 490 | outputs: [ 491 | { 492 | internalType: "bool", 493 | name: "", 494 | type: "bool", 495 | }, 496 | ], 497 | stateMutability: "view", 498 | type: "function", 499 | }, 500 | { 501 | inputs: [ 502 | { 503 | internalType: "bytes[]", 504 | name: "data", 505 | type: "bytes[]", 506 | }, 507 | ], 508 | name: "multicall", 509 | outputs: [ 510 | { 511 | internalType: "bytes[]", 512 | name: "results", 513 | type: "bytes[]", 514 | }, 515 | ], 516 | stateMutability: "nonpayable", 517 | type: "function", 518 | }, 519 | { 520 | inputs: [ 521 | { 522 | internalType: "bytes32", 523 | name: "nodehash", 524 | type: "bytes32", 525 | }, 526 | { 527 | internalType: "bytes[]", 528 | name: "data", 529 | type: "bytes[]", 530 | }, 531 | ], 532 | name: "multicallWithNodeCheck", 533 | outputs: [ 534 | { 535 | internalType: "bytes[]", 536 | name: "results", 537 | type: "bytes[]", 538 | }, 539 | ], 540 | stateMutability: "nonpayable", 541 | type: "function", 542 | }, 543 | { 544 | inputs: [ 545 | { 546 | internalType: "bytes32", 547 | name: "node", 548 | type: "bytes32", 549 | }, 550 | ], 551 | name: "name", 552 | outputs: [ 553 | { 554 | internalType: "string", 555 | name: "", 556 | type: "string", 557 | }, 558 | ], 559 | stateMutability: "view", 560 | type: "function", 561 | }, 562 | { 563 | inputs: [ 564 | { 565 | internalType: "bytes32", 566 | name: "node", 567 | type: "bytes32", 568 | }, 569 | ], 570 | name: "pubkey", 571 | outputs: [ 572 | { 573 | internalType: "bytes32", 574 | name: "x", 575 | type: "bytes32", 576 | }, 577 | { 578 | internalType: "bytes32", 579 | name: "y", 580 | type: "bytes32", 581 | }, 582 | ], 583 | stateMutability: "view", 584 | type: "function", 585 | }, 586 | { 587 | inputs: [ 588 | { 589 | internalType: "bytes32", 590 | name: "", 591 | type: "bytes32", 592 | }, 593 | ], 594 | name: "recordVersions", 595 | outputs: [ 596 | { 597 | internalType: "uint64", 598 | name: "", 599 | type: "uint64", 600 | }, 601 | ], 602 | stateMutability: "view", 603 | type: "function", 604 | }, 605 | { 606 | inputs: [ 607 | { 608 | internalType: "bytes32", 609 | name: "node", 610 | type: "bytes32", 611 | }, 612 | { 613 | internalType: "uint256", 614 | name: "contentType", 615 | type: "uint256", 616 | }, 617 | { 618 | internalType: "bytes", 619 | name: "data", 620 | type: "bytes", 621 | }, 622 | ], 623 | name: "setABI", 624 | outputs: [], 625 | stateMutability: "nonpayable", 626 | type: "function", 627 | }, 628 | { 629 | inputs: [ 630 | { 631 | internalType: "bytes32", 632 | name: "node", 633 | type: "bytes32", 634 | }, 635 | { 636 | internalType: "uint256", 637 | name: "coinType", 638 | type: "uint256", 639 | }, 640 | { 641 | internalType: "bytes", 642 | name: "a", 643 | type: "bytes", 644 | }, 645 | ], 646 | name: "setAddr", 647 | outputs: [], 648 | stateMutability: "nonpayable", 649 | type: "function", 650 | }, 651 | { 652 | inputs: [ 653 | { 654 | internalType: "bytes32", 655 | name: "node", 656 | type: "bytes32", 657 | }, 658 | { 659 | internalType: "address", 660 | name: "a", 661 | type: "address", 662 | }, 663 | ], 664 | name: "setAddr", 665 | outputs: [], 666 | stateMutability: "nonpayable", 667 | type: "function", 668 | }, 669 | { 670 | inputs: [ 671 | { 672 | internalType: "address", 673 | name: "operator", 674 | type: "address", 675 | }, 676 | { 677 | internalType: "bool", 678 | name: "approved", 679 | type: "bool", 680 | }, 681 | ], 682 | name: "setApprovalForAll", 683 | outputs: [], 684 | stateMutability: "nonpayable", 685 | type: "function", 686 | }, 687 | { 688 | inputs: [ 689 | { 690 | internalType: "bytes32", 691 | name: "node", 692 | type: "bytes32", 693 | }, 694 | { 695 | internalType: "bytes", 696 | name: "hash", 697 | type: "bytes", 698 | }, 699 | ], 700 | name: "setContenthash", 701 | outputs: [], 702 | stateMutability: "nonpayable", 703 | type: "function", 704 | }, 705 | { 706 | inputs: [ 707 | { 708 | internalType: "bytes32", 709 | name: "node", 710 | type: "bytes32", 711 | }, 712 | { 713 | internalType: "bytes4", 714 | name: "interfaceID", 715 | type: "bytes4", 716 | }, 717 | { 718 | internalType: "address", 719 | name: "implementer", 720 | type: "address", 721 | }, 722 | ], 723 | name: "setInterface", 724 | outputs: [], 725 | stateMutability: "nonpayable", 726 | type: "function", 727 | }, 728 | { 729 | inputs: [ 730 | { 731 | internalType: "bytes32", 732 | name: "node", 733 | type: "bytes32", 734 | }, 735 | { 736 | internalType: "string", 737 | name: "newName", 738 | type: "string", 739 | }, 740 | ], 741 | name: "setName", 742 | outputs: [], 743 | stateMutability: "nonpayable", 744 | type: "function", 745 | }, 746 | { 747 | inputs: [ 748 | { 749 | internalType: "bytes32", 750 | name: "node", 751 | type: "bytes32", 752 | }, 753 | { 754 | internalType: "bytes32", 755 | name: "x", 756 | type: "bytes32", 757 | }, 758 | { 759 | internalType: "bytes32", 760 | name: "y", 761 | type: "bytes32", 762 | }, 763 | ], 764 | name: "setPubkey", 765 | outputs: [], 766 | stateMutability: "nonpayable", 767 | type: "function", 768 | }, 769 | { 770 | inputs: [ 771 | { 772 | internalType: "bytes32", 773 | name: "node", 774 | type: "bytes32", 775 | }, 776 | { 777 | internalType: "string", 778 | name: "key", 779 | type: "string", 780 | }, 781 | { 782 | internalType: "string", 783 | name: "value", 784 | type: "string", 785 | }, 786 | ], 787 | name: "setText", 788 | outputs: [], 789 | stateMutability: "nonpayable", 790 | type: "function", 791 | }, 792 | { 793 | inputs: [ 794 | { 795 | internalType: "bytes4", 796 | name: "interfaceID", 797 | type: "bytes4", 798 | }, 799 | ], 800 | name: "supportsInterface", 801 | outputs: [ 802 | { 803 | internalType: "bool", 804 | name: "", 805 | type: "bool", 806 | }, 807 | ], 808 | stateMutability: "view", 809 | type: "function", 810 | }, 811 | { 812 | inputs: [ 813 | { 814 | internalType: "bytes32", 815 | name: "node", 816 | type: "bytes32", 817 | }, 818 | { 819 | internalType: "string", 820 | name: "key", 821 | type: "string", 822 | }, 823 | ], 824 | name: "text", 825 | outputs: [ 826 | { 827 | internalType: "string", 828 | name: "", 829 | type: "string", 830 | }, 831 | ], 832 | stateMutability: "view", 833 | type: "function", 834 | }, 835 | ] as const; 836 | 837 | const _bytecode = 838 | "0x6101006040523480156200001257600080fd5b50604051620026193803806200261983398101604081905262000035916200017a565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e26004820152849033906000906001600160a01b038416906302571be390602401602060405180830381865afa158015620000a1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000c79190620001e2565b604051630f41a04d60e11b81526001600160a01b03848116600483015291925090821690631e83409a906024016020604051808303816000875af115801562000114573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200013a919062000209565b5050506001600160a01b039485166080525091831660a052821660c0521660e05262000223565b6001600160a01b03811681146200017757600080fd5b50565b600080600080608085870312156200019157600080fd5b84516200019e8162000161565b6020860151909450620001b18162000161565b6040860151909350620001c48162000161565b6060860151909250620001d78162000161565b939692955090935050565b600060208284031215620001f557600080fd5b8151620002028162000161565b9392505050565b6000602082840312156200021c57600080fd5b5051919050565b60805160a05160c05160e0516123b56200026460003960006113330152600061130101526000818161140b01526114710152600061139401526123b56000f3fe608060405234801561001057600080fd5b50600436106101a35760003560e01c80638b95dd71116100ee578063c869023311610097578063e32954eb11610071578063e32954eb14610435578063e59d895d14610448578063e985e9c51461045b578063f1cb7e061461049757600080fd5b8063c869023314610386578063d5fa2b00146103df578063d700ff33146103f257600080fd5b8063a9784b3e116100c8578063a9784b3e1461030f578063ac9650d814610353578063bc1c58d11461037357600080fd5b80638b95dd71146102d6578063a22cb465146102e9578063a4b91a01146102fc57600080fd5b80633603d75811610150578063623195b01161012a578063623195b01461029d578063691f3431146102b057806377372213146102c357600080fd5b80633603d758146102575780633b3b57de1461026a57806359d1d43c1461027d57600080fd5b80632203ab56116101815780632203ab561461021057806329cd62ea14610231578063304e6ade1461024457600080fd5b806301ffc9a7146101a857806310f13a8c146101d0578063124a319c146101e5575b600080fd5b6101bb6101b63660046119c3565b6104aa565b60405190151581526020015b60405180910390f35b6101e36101de366004611a20565b6104bb565b005b6101f86101f3366004611a9a565b610588565b6040516001600160a01b0390911681526020016101c7565b61022361021e366004611ac6565b610834565b6040516101c7929190611b38565b6101e361023f366004611b51565b61096b565b6101e3610252366004611b7d565b610a06565b6101e3610265366004611bc9565b610a82565b6101f8610278366004611bc9565b610b25565b61029061028b366004611b7d565b610b57565b6040516101c79190611be2565b6101e36102ab366004611bf5565b610c37565b6102906102be366004611bc9565b610cd4565b6101e36102d1366004611b7d565b610d93565b6101e36102e4366004611c5e565b610e0f565b6101e36102f7366004611d4a565b610eef565b6101e361030a366004611d76565b610fde565b6101bb61031d366004611db4565b6001600160a01b039283166000908152600960209081526040808320948352938152838220929094168152925290205460ff1690565b610366610361366004611e3b565b6110ab565b6040516101c79190611e7d565b610290610381366004611bc9565b6110b9565b6103ca610394366004611bc9565b6000818152602081815260408083205467ffffffffffffffff168352600682528083209383529290522080546001909101549091565b604080519283526020830191909152016101c7565b6101e36103ed366004611edf565b6110f3565b61041c610400366004611bc9565b60006020819052908152604090205467ffffffffffffffff1681565b60405167ffffffffffffffff90911681526020016101c7565b610366610443366004611f0f565b61111a565b6101e3610456366004611f4e565b61112f565b6101bb610469366004611f83565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205460ff1690565b6102906104a5366004611ac6565b6111ee565b60006104b5826112b6565b92915050565b846104c5816112f4565b6104ce57600080fd5b6000868152602081815260408083205467ffffffffffffffff168352600782528083208984529091529081902090518491849161050e9089908990611fb1565b90815260200160405180910390209182610529929190612049565b50848460405161053a929190611fb1565b6040518091039020867f448bc014f1536726cf8d54ff3d6481ed3cbc683c2591ca204274009afa09b1a1878787876040516105789493929190612132565b60405180910390a3505050505050565b6000828152602081815260408083205467ffffffffffffffff1683526004825280832085845282528083206001600160e01b0319851684529091528120546001600160a01b031680156105dc5790506104b5565b60006105e785610b25565b90506001600160a01b038116610602576000925050506104b5565b6040516301ffc9a760e01b602482015260009081906001600160a01b0384169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b1790525161066f9190612164565b600060405180830381855afa9150503d80600081146106aa576040519150601f19603f3d011682016040523d82523d6000602084013e6106af565b606091505b50915091508115806106c2575060208151105b80610704575080601f815181106106db576106db612180565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b156107165760009450505050506104b5565b6040516001600160e01b0319871660248201526001600160a01b0384169060440160408051601f198184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff166301ffc9a760e01b179052516107819190612164565b600060405180830381855afa9150503d80600081146107bc576040519150601f19603f3d011682016040523d82523d6000602084013e6107c1565b606091505b5090925090508115806107d5575060208151105b80610817575080601f815181106107ee576107ee612180565b01602001517fff0000000000000000000000000000000000000000000000000000000000000016155b156108295760009450505050506104b5565b509095945050505050565b6000828152602081815260408083205467ffffffffffffffff168352600180835281842086855290925282206060915b84811161094b578085161580159061089457506000818152602083905260408120805461089090611fc1565b9050115b1561094357808260008381526020019081526020016000208080546108b890611fc1565b80601f01602080910402602001604051908101604052809291908181526020018280546108e490611fc1565b80156109315780601f1061090657610100808354040283529160200191610931565b820191906000526020600020905b81548152906001019060200180831161091457829003601f168201915b50505050509050935093505050610964565b60011b610864565b5060006040518060200160405280600081525092509250505b9250929050565b82610975816112f4565b61097e57600080fd5b604080518082018252848152602080820185815260008881528083528481205467ffffffffffffffff1681526006835284812089825283528490209251835551600190920191909155815185815290810184905285917f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4691015b60405180910390a250505050565b82610a10816112f4565b610a1957600080fd5b6000848152602081815260408083205467ffffffffffffffff168352600382528083208784529091529020610a4f838583612049565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d757884846040516109f8929190612196565b80610a8c816112f4565b610a9557600080fd5b6000828152602081905260408120805467ffffffffffffffff1691610ab9836121c0565b82546101009290920a67ffffffffffffffff818102199093169183160217909155600084815260208181526040918290205491519190921681528492507fc6621ccb8f3f5a04bb6502154b2caf6adf5983fe76dfef1cfc9c42e3579db444910160405180910390a25050565b600080610b3383603c6111ee565b90508051600003610b475750600092915050565b610b508161155b565b9392505050565b6000838152602081815260408083205467ffffffffffffffff1683526007825280832086845290915290819020905160609190610b979085908590611fb1565b90815260200160405180910390208054610bb090611fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610bdc90611fc1565b8015610c295780601f10610bfe57610100808354040283529160200191610c29565b820191906000526020600020905b815481529060010190602001808311610c0c57829003601f168201915b505050505090509392505050565b83610c41816112f4565b610c4a57600080fd5b83610c566001826121e7565b1615610c6157600080fd5b6000858152602081815260408083205467ffffffffffffffff1683526001825280832088845282528083208784529091529020610c9f838583612049565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b6000818152602081815260408083205467ffffffffffffffff168352600582528083208484529091529020805460609190610d0e90611fc1565b80601f0160208091040260200160405190810160405280929190818152602001828054610d3a90611fc1565b8015610d875780601f10610d5c57610100808354040283529160200191610d87565b820191906000526020600020905b815481529060010190602001808311610d6a57829003601f168201915b50505050509050919050565b82610d9d816112f4565b610da657600080fd5b6000848152602081815260408083205467ffffffffffffffff168352600582528083208784529091529020610ddc838583612049565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f784846040516109f8929190612196565b82610e19816112f4565b610e2257600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e54929190611b38565b60405180910390a2603c8303610eab57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610e8f8461155b565b6040516001600160a01b03909116815260200160405180910390a25b6000848152602081815260408083205467ffffffffffffffff1683526002825280832087845282528083208684529091529020610ee883826121fa565b5050505050565b6001600160a01b0382163303610f725760405162461bcd60e51b815260206004820152602960248201527f455243313135353a2073657474696e6720617070726f76616c2073746174757360448201527f20666f722073656c66000000000000000000000000000000000000000000000060648201526084015b60405180910390fd5b3360008181526008602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6001600160a01b03821633036110365760405162461bcd60e51b815260206004820181905260248201527f53657474696e672064656c65676174652073746174757320666f722073656c666044820152606401610f69565b33600081815260096020908152604080832087845282528083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519384529286917ff0ddb3b04746704017f9aa8bd728fcc2c1d11675041205350018915f5e4750a0910160405180910390a4505050565b6060610b5060008484611583565b6000818152602081815260408083205467ffffffffffffffff168352600382528083208484529091529020805460609190610d0e90611fc1565b816110fd816112f4565b61110657600080fd5b61111583603c6102e48561175c565b505050565b6060611127848484611583565b949350505050565b82611139816112f4565b61114257600080fd5b6000848152602081815260408083205467ffffffffffffffff1683526004825280832087845282528083206001600160e01b031987168085529083529281902080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038716908117909155905190815286917f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa910160405180910390a350505050565b6000828152602081815260408083205467ffffffffffffffff168352600282528083208584528252808320848452909152902080546060919061123090611fc1565b80601f016020809104026020016040519081016040528092919081815260200182805461125c90611fc1565b80156112a95780601f1061127e576101008083540402835291602001916112a9565b820191906000526020600020905b81548152906001019060200180831161128c57829003601f168201915b5050505050905092915050565b60006001600160e01b031982167f59d1d43c0000000000000000000000000000000000000000000000000000000014806104b557506104b582611795565b6000336001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614806113555750336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016145b1561136257506001919050565b6040517f02571be3000000000000000000000000000000000000000000000000000000008152600481018390526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302571be390602401602060405180830381865afa1580156113e3573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061140791906122ba565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316816001600160a01b0316036114e7576040517f6352211e000000000000000000000000000000000000000000000000000000008152600481018490527f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031690636352211e90602401602060405180830381865afa1580156114c0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114e491906122ba565b90505b6001600160a01b03811633148061152157506001600160a01b038116600090815260086020908152604080832033845290915290205460ff165b80610b5057506001600160a01b0381166000908152600960209081526040808320868452825280832033845290915290205460ff16610b50565b6000815160141461156b57600080fd5b50602001516c01000000000000000000000000900490565b60608167ffffffffffffffff81111561159e5761159e611c48565b6040519080825280602002602001820160405280156115d157816020015b60608152602001906001900390816115bc5790505b50905060005b8281101561175457841561169c5760008484838181106115f9576115f9612180565b905060200281019061160b91906122d7565b61161a9160249160049161231e565b61162391612348565b905085811461169a5760405162461bcd60e51b815260206004820152603460248201527f6d756c746963616c6c3a20416c6c207265636f726473206d757374206861766560448201527f2061206d61746368696e67206e616d65686173680000000000000000000000006064820152608401610f69565b505b600080308686858181106116b2576116b2612180565b90506020028101906116c491906122d7565b6040516116d2929190611fb1565b600060405180830381855af49150503d806000811461170d576040519150601f19603f3d011682016040523d82523d6000602084013e611712565b606091505b50915091508161172157600080fd5b8084848151811061173457611734612180565b60200260200101819052505050808061174c90612366565b9150506115d7565b509392505050565b6040805160148082528183019092526060916020820181803683375050506c010000000000000000000000009290920260208301525090565b60006001600160e01b031982167fc86902330000000000000000000000000000000000000000000000000000000014806104b557506104b58260006001600160e01b031982167f691f34310000000000000000000000000000000000000000000000000000000014806104b557506104b58260006001600160e01b031982167f124a319c0000000000000000000000000000000000000000000000000000000014806104b557506104b58260006001600160e01b031982167fbc1c58d10000000000000000000000000000000000000000000000000000000014806104b557506104b58260006001600160e01b031982167f3b3b57de0000000000000000000000000000000000000000000000000000000014806118dc57506001600160e01b031982167ff1cb7e0600000000000000000000000000000000000000000000000000000000145b806104b557506104b58260006001600160e01b031982167f2203ab560000000000000000000000000000000000000000000000000000000014806104b557506104b58260006001600160e01b031982167fd700ff330000000000000000000000000000000000000000000000000000000014806104b557506104b58260006001600160e01b031982167f4fbf04330000000000000000000000000000000000000000000000000000000014806104b557506301ffc9a760e01b6001600160e01b03198316146104b5565b80356001600160e01b0319811681146119be57600080fd5b919050565b6000602082840312156119d557600080fd5b610b50826119a6565b60008083601f8401126119f057600080fd5b50813567ffffffffffffffff811115611a0857600080fd5b60208301915083602082850101111561096457600080fd5b600080600080600060608688031215611a3857600080fd5b85359450602086013567ffffffffffffffff80821115611a5757600080fd5b611a6389838a016119de565b90965094506040880135915080821115611a7c57600080fd5b50611a89888289016119de565b969995985093965092949392505050565b60008060408385031215611aad57600080fd5b82359150611abd602084016119a6565b90509250929050565b60008060408385031215611ad957600080fd5b50508035926020909101359150565b60005b83811015611b03578181015183820152602001611aeb565b50506000910152565b60008151808452611b24816020860160208601611ae8565b601f01601f19169290920160200192915050565b8281526040602082015260006111276040830184611b0c565b600080600060608486031215611b6657600080fd5b505081359360208301359350604090920135919050565b600080600060408486031215611b9257600080fd5b83359250602084013567ffffffffffffffff811115611bb057600080fd5b611bbc868287016119de565b9497909650939450505050565b600060208284031215611bdb57600080fd5b5035919050565b602081526000610b506020830184611b0c565b60008060008060608587031215611c0b57600080fd5b8435935060208501359250604085013567ffffffffffffffff811115611c3057600080fd5b611c3c878288016119de565b95989497509550505050565b634e487b7160e01b600052604160045260246000fd5b600080600060608486031215611c7357600080fd5b8335925060208401359150604084013567ffffffffffffffff80821115611c9957600080fd5b818601915086601f830112611cad57600080fd5b813581811115611cbf57611cbf611c48565b604051601f8201601f19908116603f01168101908382118183101715611ce757611ce7611c48565b81604052828152896020848701011115611d0057600080fd5b8260208601602083013760006020848301015280955050505050509250925092565b6001600160a01b0381168114611d3757600080fd5b50565b803580151581146119be57600080fd5b60008060408385031215611d5d57600080fd5b8235611d6881611d22565b9150611abd60208401611d3a565b600080600060608486031215611d8b57600080fd5b833592506020840135611d9d81611d22565b9150611dab60408501611d3a565b90509250925092565b600080600060608486031215611dc957600080fd5b8335611dd481611d22565b9250602084013591506040840135611deb81611d22565b809150509250925092565b60008083601f840112611e0857600080fd5b50813567ffffffffffffffff811115611e2057600080fd5b6020830191508360208260051b850101111561096457600080fd5b60008060208385031215611e4e57600080fd5b823567ffffffffffffffff811115611e6557600080fd5b611e7185828601611df6565b90969095509350505050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015611ed257603f19888603018452611ec0858351611b0c565b94509285019290850190600101611ea4565b5092979650505050505050565b60008060408385031215611ef257600080fd5b823591506020830135611f0481611d22565b809150509250929050565b600080600060408486031215611f2457600080fd5b83359250602084013567ffffffffffffffff811115611f4257600080fd5b611bbc86828701611df6565b600080600060608486031215611f6357600080fd5b83359250611f73602085016119a6565b91506040840135611deb81611d22565b60008060408385031215611f9657600080fd5b8235611fa181611d22565b91506020830135611f0481611d22565b8183823760009101908152919050565b600181811c90821680611fd557607f821691505b602082108103611ff557634e487b7160e01b600052602260045260246000fd5b50919050565b601f82111561111557600081815260208120601f850160051c810160208610156120225750805b601f850160051c820191505b818110156120415782815560010161202e565b505050505050565b67ffffffffffffffff83111561206157612061611c48565b6120758361206f8354611fc1565b83611ffb565b6000601f8411600181146120a957600085156120915750838201355b600019600387901b1c1916600186901b178355610ee8565b600083815260209020601f19861690835b828110156120da57868501358255602094850194600190920191016120ba565b50868210156120f75760001960f88860031b161c19848701351681555b505060018560011b0183555050505050565b81835281816020850137506000828201602090810191909152601f909101601f19169091010190565b604081526000612146604083018688612109565b8281036020840152612159818587612109565b979650505050505050565b60008251612176818460208701611ae8565b9190910192915050565b634e487b7160e01b600052603260045260246000fd5b602081526000611127602083018486612109565b634e487b7160e01b600052601160045260246000fd5b600067ffffffffffffffff8083168181036121dd576121dd6121aa565b6001019392505050565b818103818111156104b5576104b56121aa565b815167ffffffffffffffff81111561221457612214611c48565b612228816122228454611fc1565b84611ffb565b602080601f83116001811461225d57600084156122455750858301515b600019600386901b1c1916600185901b178555612041565b600085815260208120601f198616915b8281101561228c5788860151825594840194600190910190840161226d565b50858210156122aa5787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156122cc57600080fd5b8151610b5081611d22565b6000808335601e198436030181126122ee57600080fd5b83018035915067ffffffffffffffff82111561230957600080fd5b60200191503681900382131561096457600080fd5b6000808585111561232e57600080fd5b8386111561233b57600080fd5b5050820193919092039150565b803560208310156104b557600019602084900360031b1b1692915050565b600060018201612378576123786121aa565b506001019056fea2646970667358221220d318e3268b651365b9aab8fb4908ac56e7ab43b82b52913fc9922bad35fbf0f364736f6c63430008110033"; 839 | 840 | type PublicResolverConstructorParams = 841 | | [signer?: Signer] 842 | | ConstructorParameters; 843 | 844 | const isSuperArgs = ( 845 | xs: PublicResolverConstructorParams 846 | ): xs is ConstructorParameters => xs.length > 1; 847 | 848 | export class PublicResolver__factory extends ContractFactory { 849 | constructor(...args: PublicResolverConstructorParams) { 850 | if (isSuperArgs(args)) { 851 | super(...args); 852 | } else { 853 | super(_abi, _bytecode, args[0]); 854 | } 855 | } 856 | 857 | override deploy( 858 | _ins: PromiseOrValue, 859 | wrapperAddress: PromiseOrValue, 860 | _trustedETHController: PromiseOrValue, 861 | _trustedReverseRegistrar: PromiseOrValue, 862 | overrides?: Overrides & { from?: PromiseOrValue } 863 | ): Promise { 864 | return super.deploy( 865 | _ins, 866 | wrapperAddress, 867 | _trustedETHController, 868 | _trustedReverseRegistrar, 869 | overrides || {} 870 | ) as Promise; 871 | } 872 | override getDeployTransaction( 873 | _ins: PromiseOrValue, 874 | wrapperAddress: PromiseOrValue, 875 | _trustedETHController: PromiseOrValue, 876 | _trustedReverseRegistrar: PromiseOrValue, 877 | overrides?: Overrides & { from?: PromiseOrValue } 878 | ): TransactionRequest { 879 | return super.getDeployTransaction( 880 | _ins, 881 | wrapperAddress, 882 | _trustedETHController, 883 | _trustedReverseRegistrar, 884 | overrides || {} 885 | ); 886 | } 887 | override attach(address: string): PublicResolver { 888 | return super.attach(address) as PublicResolver; 889 | } 890 | override connect(signer: Signer): PublicResolver__factory { 891 | return super.connect(signer) as PublicResolver__factory; 892 | } 893 | 894 | static readonly bytecode = _bytecode; 895 | static readonly abi = _abi; 896 | static createInterface(): PublicResolverInterface { 897 | return new utils.Interface(_abi) as PublicResolverInterface; 898 | } 899 | static connect( 900 | address: string, 901 | signerOrProvider: Signer | Provider 902 | ): PublicResolver { 903 | return new Contract(address, _abi, signerOrProvider) as PublicResolver; 904 | } 905 | } 906 | -------------------------------------------------------------------------------- /src/contracts/ZKPWalletNFT.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { 5 | BaseContract, 6 | BigNumber, 7 | BigNumberish, 8 | BytesLike, 9 | CallOverrides, 10 | ContractTransaction, 11 | Overrides, 12 | PayableOverrides, 13 | PopulatedTransaction, 14 | Signer, 15 | utils, 16 | } from "ethers"; 17 | import type { 18 | FunctionFragment, 19 | Result, 20 | EventFragment, 21 | } from "@ethersproject/abi"; 22 | import type { Listener, Provider } from "@ethersproject/providers"; 23 | import type { 24 | TypedEventFilter, 25 | TypedEvent, 26 | TypedListener, 27 | OnEvent, 28 | PromiseOrValue, 29 | } from "./common"; 30 | 31 | export interface ZKPWalletNFTInterface extends utils.Interface { 32 | functions: { 33 | "TOTAL()": FunctionFragment; 34 | "approve(address,uint256)": FunctionFragment; 35 | "balanceOf(address)": FunctionFragment; 36 | "getApproved(uint256)": FunctionFragment; 37 | "isApprovedForAll(address,address)": FunctionFragment; 38 | "mint()": FunctionFragment; 39 | "name()": FunctionFragment; 40 | "nextTokenId()": FunctionFragment; 41 | "ownerOf(uint256)": FunctionFragment; 42 | "safeTransferFrom(address,address,uint256)": FunctionFragment; 43 | "safeTransferFrom(address,address,uint256,bytes)": FunctionFragment; 44 | "setApprovalForAll(address,bool)": FunctionFragment; 45 | "supportsInterface(bytes4)": FunctionFragment; 46 | "symbol()": FunctionFragment; 47 | "tokenURI(uint256)": FunctionFragment; 48 | "transferFrom(address,address,uint256)": FunctionFragment; 49 | }; 50 | 51 | getFunction( 52 | nameOrSignatureOrTopic: 53 | | "TOTAL" 54 | | "approve" 55 | | "balanceOf" 56 | | "getApproved" 57 | | "isApprovedForAll" 58 | | "mint" 59 | | "name" 60 | | "nextTokenId" 61 | | "ownerOf" 62 | | "safeTransferFrom(address,address,uint256)" 63 | | "safeTransferFrom(address,address,uint256,bytes)" 64 | | "setApprovalForAll" 65 | | "supportsInterface" 66 | | "symbol" 67 | | "tokenURI" 68 | | "transferFrom" 69 | ): FunctionFragment; 70 | 71 | encodeFunctionData(functionFragment: "TOTAL", values?: undefined): string; 72 | encodeFunctionData( 73 | functionFragment: "approve", 74 | values: [PromiseOrValue, PromiseOrValue] 75 | ): string; 76 | encodeFunctionData( 77 | functionFragment: "balanceOf", 78 | values: [PromiseOrValue] 79 | ): string; 80 | encodeFunctionData( 81 | functionFragment: "getApproved", 82 | values: [PromiseOrValue] 83 | ): string; 84 | encodeFunctionData( 85 | functionFragment: "isApprovedForAll", 86 | values: [PromiseOrValue, PromiseOrValue] 87 | ): string; 88 | encodeFunctionData(functionFragment: "mint", values?: undefined): string; 89 | encodeFunctionData(functionFragment: "name", values?: undefined): string; 90 | encodeFunctionData( 91 | functionFragment: "nextTokenId", 92 | values?: undefined 93 | ): string; 94 | encodeFunctionData( 95 | functionFragment: "ownerOf", 96 | values: [PromiseOrValue] 97 | ): string; 98 | encodeFunctionData( 99 | functionFragment: "safeTransferFrom(address,address,uint256)", 100 | values: [ 101 | PromiseOrValue, 102 | PromiseOrValue, 103 | PromiseOrValue 104 | ] 105 | ): string; 106 | encodeFunctionData( 107 | functionFragment: "safeTransferFrom(address,address,uint256,bytes)", 108 | values: [ 109 | PromiseOrValue, 110 | PromiseOrValue, 111 | PromiseOrValue, 112 | PromiseOrValue 113 | ] 114 | ): string; 115 | encodeFunctionData( 116 | functionFragment: "setApprovalForAll", 117 | values: [PromiseOrValue, PromiseOrValue] 118 | ): string; 119 | encodeFunctionData( 120 | functionFragment: "supportsInterface", 121 | values: [PromiseOrValue] 122 | ): string; 123 | encodeFunctionData(functionFragment: "symbol", values?: undefined): string; 124 | encodeFunctionData( 125 | functionFragment: "tokenURI", 126 | values: [PromiseOrValue] 127 | ): string; 128 | encodeFunctionData( 129 | functionFragment: "transferFrom", 130 | values: [ 131 | PromiseOrValue, 132 | PromiseOrValue, 133 | PromiseOrValue 134 | ] 135 | ): string; 136 | 137 | decodeFunctionResult(functionFragment: "TOTAL", data: BytesLike): Result; 138 | decodeFunctionResult(functionFragment: "approve", data: BytesLike): Result; 139 | decodeFunctionResult(functionFragment: "balanceOf", data: BytesLike): Result; 140 | decodeFunctionResult( 141 | functionFragment: "getApproved", 142 | data: BytesLike 143 | ): Result; 144 | decodeFunctionResult( 145 | functionFragment: "isApprovedForAll", 146 | data: BytesLike 147 | ): Result; 148 | decodeFunctionResult(functionFragment: "mint", data: BytesLike): Result; 149 | decodeFunctionResult(functionFragment: "name", data: BytesLike): Result; 150 | decodeFunctionResult( 151 | functionFragment: "nextTokenId", 152 | data: BytesLike 153 | ): Result; 154 | decodeFunctionResult(functionFragment: "ownerOf", data: BytesLike): Result; 155 | decodeFunctionResult( 156 | functionFragment: "safeTransferFrom(address,address,uint256)", 157 | data: BytesLike 158 | ): Result; 159 | decodeFunctionResult( 160 | functionFragment: "safeTransferFrom(address,address,uint256,bytes)", 161 | data: BytesLike 162 | ): Result; 163 | decodeFunctionResult( 164 | functionFragment: "setApprovalForAll", 165 | data: BytesLike 166 | ): Result; 167 | decodeFunctionResult( 168 | functionFragment: "supportsInterface", 169 | data: BytesLike 170 | ): Result; 171 | decodeFunctionResult(functionFragment: "symbol", data: BytesLike): Result; 172 | decodeFunctionResult(functionFragment: "tokenURI", data: BytesLike): Result; 173 | decodeFunctionResult( 174 | functionFragment: "transferFrom", 175 | data: BytesLike 176 | ): Result; 177 | 178 | events: { 179 | "Approval(address,address,uint256)": EventFragment; 180 | "ApprovalForAll(address,address,bool)": EventFragment; 181 | "Transfer(address,address,uint256)": EventFragment; 182 | }; 183 | 184 | getEvent(nameOrSignatureOrTopic: "Approval"): EventFragment; 185 | getEvent(nameOrSignatureOrTopic: "ApprovalForAll"): EventFragment; 186 | getEvent(nameOrSignatureOrTopic: "Transfer"): EventFragment; 187 | } 188 | 189 | export interface ApprovalEventObject { 190 | owner: string; 191 | spender: string; 192 | id: BigNumber; 193 | } 194 | export type ApprovalEvent = TypedEvent< 195 | [string, string, BigNumber], 196 | ApprovalEventObject 197 | >; 198 | 199 | export type ApprovalEventFilter = TypedEventFilter; 200 | 201 | export interface ApprovalForAllEventObject { 202 | owner: string; 203 | operator: string; 204 | approved: boolean; 205 | } 206 | export type ApprovalForAllEvent = TypedEvent< 207 | [string, string, boolean], 208 | ApprovalForAllEventObject 209 | >; 210 | 211 | export type ApprovalForAllEventFilter = TypedEventFilter; 212 | 213 | export interface TransferEventObject { 214 | from: string; 215 | to: string; 216 | id: BigNumber; 217 | } 218 | export type TransferEvent = TypedEvent< 219 | [string, string, BigNumber], 220 | TransferEventObject 221 | >; 222 | 223 | export type TransferEventFilter = TypedEventFilter; 224 | 225 | export interface ZKPWalletNFT extends BaseContract { 226 | connect(signerOrProvider: Signer | Provider | string): this; 227 | attach(addressOrName: string): this; 228 | deployed(): Promise; 229 | 230 | interface: ZKPWalletNFTInterface; 231 | 232 | queryFilter( 233 | event: TypedEventFilter, 234 | fromBlockOrBlockhash?: string | number | undefined, 235 | toBlock?: string | number | undefined 236 | ): Promise>; 237 | 238 | listeners( 239 | eventFilter?: TypedEventFilter 240 | ): Array>; 241 | listeners(eventName?: string): Array; 242 | removeAllListeners( 243 | eventFilter: TypedEventFilter 244 | ): this; 245 | removeAllListeners(eventName?: string): this; 246 | off: OnEvent; 247 | on: OnEvent; 248 | once: OnEvent; 249 | removeListener: OnEvent; 250 | 251 | functions: { 252 | TOTAL(overrides?: CallOverrides): Promise<[BigNumber]>; 253 | 254 | approve( 255 | spender: PromiseOrValue, 256 | id: PromiseOrValue, 257 | overrides?: Overrides & { from?: PromiseOrValue } 258 | ): Promise; 259 | 260 | balanceOf( 261 | owner: PromiseOrValue, 262 | overrides?: CallOverrides 263 | ): Promise<[BigNumber]>; 264 | 265 | getApproved( 266 | arg0: PromiseOrValue, 267 | overrides?: CallOverrides 268 | ): Promise<[string]>; 269 | 270 | isApprovedForAll( 271 | arg0: PromiseOrValue, 272 | arg1: PromiseOrValue, 273 | overrides?: CallOverrides 274 | ): Promise<[boolean]>; 275 | 276 | mint( 277 | overrides?: PayableOverrides & { from?: PromiseOrValue } 278 | ): Promise; 279 | 280 | name(overrides?: CallOverrides): Promise<[string]>; 281 | 282 | nextTokenId(overrides?: CallOverrides): Promise<[BigNumber]>; 283 | 284 | ownerOf( 285 | id: PromiseOrValue, 286 | overrides?: CallOverrides 287 | ): Promise<[string] & { owner: string }>; 288 | 289 | "safeTransferFrom(address,address,uint256)"( 290 | from: PromiseOrValue, 291 | to: PromiseOrValue, 292 | id: PromiseOrValue, 293 | overrides?: Overrides & { from?: PromiseOrValue } 294 | ): Promise; 295 | 296 | "safeTransferFrom(address,address,uint256,bytes)"( 297 | from: PromiseOrValue, 298 | to: PromiseOrValue, 299 | id: PromiseOrValue, 300 | data: PromiseOrValue, 301 | overrides?: Overrides & { from?: PromiseOrValue } 302 | ): Promise; 303 | 304 | setApprovalForAll( 305 | operator: PromiseOrValue, 306 | approved: PromiseOrValue, 307 | overrides?: Overrides & { from?: PromiseOrValue } 308 | ): Promise; 309 | 310 | supportsInterface( 311 | interfaceId: PromiseOrValue, 312 | overrides?: CallOverrides 313 | ): Promise<[boolean]>; 314 | 315 | symbol(overrides?: CallOverrides): Promise<[string]>; 316 | 317 | tokenURI( 318 | arg0: PromiseOrValue, 319 | overrides?: CallOverrides 320 | ): Promise<[string]>; 321 | 322 | transferFrom( 323 | from: PromiseOrValue, 324 | to: PromiseOrValue, 325 | id: PromiseOrValue, 326 | overrides?: Overrides & { from?: PromiseOrValue } 327 | ): Promise; 328 | }; 329 | 330 | TOTAL(overrides?: CallOverrides): Promise; 331 | 332 | approve( 333 | spender: PromiseOrValue, 334 | id: PromiseOrValue, 335 | overrides?: Overrides & { from?: PromiseOrValue } 336 | ): Promise; 337 | 338 | balanceOf( 339 | owner: PromiseOrValue, 340 | overrides?: CallOverrides 341 | ): Promise; 342 | 343 | getApproved( 344 | arg0: PromiseOrValue, 345 | overrides?: CallOverrides 346 | ): Promise; 347 | 348 | isApprovedForAll( 349 | arg0: PromiseOrValue, 350 | arg1: PromiseOrValue, 351 | overrides?: CallOverrides 352 | ): Promise; 353 | 354 | mint( 355 | overrides?: PayableOverrides & { from?: PromiseOrValue } 356 | ): Promise; 357 | 358 | name(overrides?: CallOverrides): Promise; 359 | 360 | nextTokenId(overrides?: CallOverrides): Promise; 361 | 362 | ownerOf( 363 | id: PromiseOrValue, 364 | overrides?: CallOverrides 365 | ): Promise; 366 | 367 | "safeTransferFrom(address,address,uint256)"( 368 | from: PromiseOrValue, 369 | to: PromiseOrValue, 370 | id: PromiseOrValue, 371 | overrides?: Overrides & { from?: PromiseOrValue } 372 | ): Promise; 373 | 374 | "safeTransferFrom(address,address,uint256,bytes)"( 375 | from: PromiseOrValue, 376 | to: PromiseOrValue, 377 | id: PromiseOrValue, 378 | data: PromiseOrValue, 379 | overrides?: Overrides & { from?: PromiseOrValue } 380 | ): Promise; 381 | 382 | setApprovalForAll( 383 | operator: PromiseOrValue, 384 | approved: PromiseOrValue, 385 | overrides?: Overrides & { from?: PromiseOrValue } 386 | ): Promise; 387 | 388 | supportsInterface( 389 | interfaceId: PromiseOrValue, 390 | overrides?: CallOverrides 391 | ): Promise; 392 | 393 | symbol(overrides?: CallOverrides): Promise; 394 | 395 | tokenURI( 396 | arg0: PromiseOrValue, 397 | overrides?: CallOverrides 398 | ): Promise; 399 | 400 | transferFrom( 401 | from: PromiseOrValue, 402 | to: PromiseOrValue, 403 | id: PromiseOrValue, 404 | overrides?: Overrides & { from?: PromiseOrValue } 405 | ): Promise; 406 | 407 | callStatic: { 408 | TOTAL(overrides?: CallOverrides): Promise; 409 | 410 | approve( 411 | spender: PromiseOrValue, 412 | id: PromiseOrValue, 413 | overrides?: CallOverrides 414 | ): Promise; 415 | 416 | balanceOf( 417 | owner: PromiseOrValue, 418 | overrides?: CallOverrides 419 | ): Promise; 420 | 421 | getApproved( 422 | arg0: PromiseOrValue, 423 | overrides?: CallOverrides 424 | ): Promise; 425 | 426 | isApprovedForAll( 427 | arg0: PromiseOrValue, 428 | arg1: PromiseOrValue, 429 | overrides?: CallOverrides 430 | ): Promise; 431 | 432 | mint(overrides?: CallOverrides): Promise; 433 | 434 | name(overrides?: CallOverrides): Promise; 435 | 436 | nextTokenId(overrides?: CallOverrides): Promise; 437 | 438 | ownerOf( 439 | id: PromiseOrValue, 440 | overrides?: CallOverrides 441 | ): Promise; 442 | 443 | "safeTransferFrom(address,address,uint256)"( 444 | from: PromiseOrValue, 445 | to: PromiseOrValue, 446 | id: PromiseOrValue, 447 | overrides?: CallOverrides 448 | ): Promise; 449 | 450 | "safeTransferFrom(address,address,uint256,bytes)"( 451 | from: PromiseOrValue, 452 | to: PromiseOrValue, 453 | id: PromiseOrValue, 454 | data: PromiseOrValue, 455 | overrides?: CallOverrides 456 | ): Promise; 457 | 458 | setApprovalForAll( 459 | operator: PromiseOrValue, 460 | approved: PromiseOrValue, 461 | overrides?: CallOverrides 462 | ): Promise; 463 | 464 | supportsInterface( 465 | interfaceId: PromiseOrValue, 466 | overrides?: CallOverrides 467 | ): Promise; 468 | 469 | symbol(overrides?: CallOverrides): Promise; 470 | 471 | tokenURI( 472 | arg0: PromiseOrValue, 473 | overrides?: CallOverrides 474 | ): Promise; 475 | 476 | transferFrom( 477 | from: PromiseOrValue, 478 | to: PromiseOrValue, 479 | id: PromiseOrValue, 480 | overrides?: CallOverrides 481 | ): Promise; 482 | }; 483 | 484 | filters: { 485 | "Approval(address,address,uint256)"( 486 | owner?: PromiseOrValue | null, 487 | spender?: PromiseOrValue | null, 488 | id?: PromiseOrValue | null 489 | ): ApprovalEventFilter; 490 | Approval( 491 | owner?: PromiseOrValue | null, 492 | spender?: PromiseOrValue | null, 493 | id?: PromiseOrValue | null 494 | ): ApprovalEventFilter; 495 | 496 | "ApprovalForAll(address,address,bool)"( 497 | owner?: PromiseOrValue | null, 498 | operator?: PromiseOrValue | null, 499 | approved?: null 500 | ): ApprovalForAllEventFilter; 501 | ApprovalForAll( 502 | owner?: PromiseOrValue | null, 503 | operator?: PromiseOrValue | null, 504 | approved?: null 505 | ): ApprovalForAllEventFilter; 506 | 507 | "Transfer(address,address,uint256)"( 508 | from?: PromiseOrValue | null, 509 | to?: PromiseOrValue | null, 510 | id?: PromiseOrValue | null 511 | ): TransferEventFilter; 512 | Transfer( 513 | from?: PromiseOrValue | null, 514 | to?: PromiseOrValue | null, 515 | id?: PromiseOrValue | null 516 | ): TransferEventFilter; 517 | }; 518 | 519 | estimateGas: { 520 | TOTAL(overrides?: CallOverrides): Promise; 521 | 522 | approve( 523 | spender: PromiseOrValue, 524 | id: PromiseOrValue, 525 | overrides?: Overrides & { from?: PromiseOrValue } 526 | ): Promise; 527 | 528 | balanceOf( 529 | owner: PromiseOrValue, 530 | overrides?: CallOverrides 531 | ): Promise; 532 | 533 | getApproved( 534 | arg0: PromiseOrValue, 535 | overrides?: CallOverrides 536 | ): Promise; 537 | 538 | isApprovedForAll( 539 | arg0: PromiseOrValue, 540 | arg1: PromiseOrValue, 541 | overrides?: CallOverrides 542 | ): Promise; 543 | 544 | mint( 545 | overrides?: PayableOverrides & { from?: PromiseOrValue } 546 | ): Promise; 547 | 548 | name(overrides?: CallOverrides): Promise; 549 | 550 | nextTokenId(overrides?: CallOverrides): Promise; 551 | 552 | ownerOf( 553 | id: PromiseOrValue, 554 | overrides?: CallOverrides 555 | ): Promise; 556 | 557 | "safeTransferFrom(address,address,uint256)"( 558 | from: PromiseOrValue, 559 | to: PromiseOrValue, 560 | id: PromiseOrValue, 561 | overrides?: Overrides & { from?: PromiseOrValue } 562 | ): Promise; 563 | 564 | "safeTransferFrom(address,address,uint256,bytes)"( 565 | from: PromiseOrValue, 566 | to: PromiseOrValue, 567 | id: PromiseOrValue, 568 | data: PromiseOrValue, 569 | overrides?: Overrides & { from?: PromiseOrValue } 570 | ): Promise; 571 | 572 | setApprovalForAll( 573 | operator: PromiseOrValue, 574 | approved: PromiseOrValue, 575 | overrides?: Overrides & { from?: PromiseOrValue } 576 | ): Promise; 577 | 578 | supportsInterface( 579 | interfaceId: PromiseOrValue, 580 | overrides?: CallOverrides 581 | ): Promise; 582 | 583 | symbol(overrides?: CallOverrides): Promise; 584 | 585 | tokenURI( 586 | arg0: PromiseOrValue, 587 | overrides?: CallOverrides 588 | ): Promise; 589 | 590 | transferFrom( 591 | from: PromiseOrValue, 592 | to: PromiseOrValue, 593 | id: PromiseOrValue, 594 | overrides?: Overrides & { from?: PromiseOrValue } 595 | ): Promise; 596 | }; 597 | 598 | populateTransaction: { 599 | TOTAL(overrides?: CallOverrides): Promise; 600 | 601 | approve( 602 | spender: PromiseOrValue, 603 | id: PromiseOrValue, 604 | overrides?: Overrides & { from?: PromiseOrValue } 605 | ): Promise; 606 | 607 | balanceOf( 608 | owner: PromiseOrValue, 609 | overrides?: CallOverrides 610 | ): Promise; 611 | 612 | getApproved( 613 | arg0: PromiseOrValue, 614 | overrides?: CallOverrides 615 | ): Promise; 616 | 617 | isApprovedForAll( 618 | arg0: PromiseOrValue, 619 | arg1: PromiseOrValue, 620 | overrides?: CallOverrides 621 | ): Promise; 622 | 623 | mint( 624 | overrides?: PayableOverrides & { from?: PromiseOrValue } 625 | ): Promise; 626 | 627 | name(overrides?: CallOverrides): Promise; 628 | 629 | nextTokenId(overrides?: CallOverrides): Promise; 630 | 631 | ownerOf( 632 | id: PromiseOrValue, 633 | overrides?: CallOverrides 634 | ): Promise; 635 | 636 | "safeTransferFrom(address,address,uint256)"( 637 | from: PromiseOrValue, 638 | to: PromiseOrValue, 639 | id: PromiseOrValue, 640 | overrides?: Overrides & { from?: PromiseOrValue } 641 | ): Promise; 642 | 643 | "safeTransferFrom(address,address,uint256,bytes)"( 644 | from: PromiseOrValue, 645 | to: PromiseOrValue, 646 | id: PromiseOrValue, 647 | data: PromiseOrValue, 648 | overrides?: Overrides & { from?: PromiseOrValue } 649 | ): Promise; 650 | 651 | setApprovalForAll( 652 | operator: PromiseOrValue, 653 | approved: PromiseOrValue, 654 | overrides?: Overrides & { from?: PromiseOrValue } 655 | ): Promise; 656 | 657 | supportsInterface( 658 | interfaceId: PromiseOrValue, 659 | overrides?: CallOverrides 660 | ): Promise; 661 | 662 | symbol(overrides?: CallOverrides): Promise; 663 | 664 | tokenURI( 665 | arg0: PromiseOrValue, 666 | overrides?: CallOverrides 667 | ): Promise; 668 | 669 | transferFrom( 670 | from: PromiseOrValue, 671 | to: PromiseOrValue, 672 | id: PromiseOrValue, 673 | overrides?: Overrides & { from?: PromiseOrValue } 674 | ): Promise; 675 | }; 676 | } 677 | -------------------------------------------------------------------------------- /src/contracts/ZKPWalletNFT__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; 5 | import type { Provider, TransactionRequest } from "@ethersproject/providers"; 6 | import type { PromiseOrValue } from "./common"; 7 | import type { 8 | ZKPWalletNFT, 9 | ZKPWalletNFTInterface, 10 | } from "./ZKPWalletNFT"; 11 | 12 | const _abi = [ 13 | { 14 | inputs: [ 15 | { 16 | internalType: "string", 17 | name: "_uri", 18 | type: "string", 19 | }, 20 | ], 21 | stateMutability: "nonpayable", 22 | type: "constructor", 23 | }, 24 | { 25 | anonymous: false, 26 | inputs: [ 27 | { 28 | indexed: true, 29 | internalType: "address", 30 | name: "owner", 31 | type: "address", 32 | }, 33 | { 34 | indexed: true, 35 | internalType: "address", 36 | name: "spender", 37 | type: "address", 38 | }, 39 | { 40 | indexed: true, 41 | internalType: "uint256", 42 | name: "id", 43 | type: "uint256", 44 | }, 45 | ], 46 | name: "Approval", 47 | type: "event", 48 | }, 49 | { 50 | anonymous: false, 51 | inputs: [ 52 | { 53 | indexed: true, 54 | internalType: "address", 55 | name: "owner", 56 | type: "address", 57 | }, 58 | { 59 | indexed: true, 60 | internalType: "address", 61 | name: "operator", 62 | type: "address", 63 | }, 64 | { 65 | indexed: false, 66 | internalType: "bool", 67 | name: "approved", 68 | type: "bool", 69 | }, 70 | ], 71 | name: "ApprovalForAll", 72 | type: "event", 73 | }, 74 | { 75 | anonymous: false, 76 | inputs: [ 77 | { 78 | indexed: true, 79 | internalType: "address", 80 | name: "from", 81 | type: "address", 82 | }, 83 | { 84 | indexed: true, 85 | internalType: "address", 86 | name: "to", 87 | type: "address", 88 | }, 89 | { 90 | indexed: true, 91 | internalType: "uint256", 92 | name: "id", 93 | type: "uint256", 94 | }, 95 | ], 96 | name: "Transfer", 97 | type: "event", 98 | }, 99 | { 100 | inputs: [], 101 | name: "TOTAL", 102 | outputs: [ 103 | { 104 | internalType: "uint256", 105 | name: "", 106 | type: "uint256", 107 | }, 108 | ], 109 | stateMutability: "view", 110 | type: "function", 111 | }, 112 | { 113 | inputs: [ 114 | { 115 | internalType: "address", 116 | name: "spender", 117 | type: "address", 118 | }, 119 | { 120 | internalType: "uint256", 121 | name: "id", 122 | type: "uint256", 123 | }, 124 | ], 125 | name: "approve", 126 | outputs: [], 127 | stateMutability: "nonpayable", 128 | type: "function", 129 | }, 130 | { 131 | inputs: [ 132 | { 133 | internalType: "address", 134 | name: "owner", 135 | type: "address", 136 | }, 137 | ], 138 | name: "balanceOf", 139 | outputs: [ 140 | { 141 | internalType: "uint256", 142 | name: "", 143 | type: "uint256", 144 | }, 145 | ], 146 | stateMutability: "view", 147 | type: "function", 148 | }, 149 | { 150 | inputs: [ 151 | { 152 | internalType: "uint256", 153 | name: "", 154 | type: "uint256", 155 | }, 156 | ], 157 | name: "getApproved", 158 | outputs: [ 159 | { 160 | internalType: "address", 161 | name: "", 162 | type: "address", 163 | }, 164 | ], 165 | stateMutability: "view", 166 | type: "function", 167 | }, 168 | { 169 | inputs: [ 170 | { 171 | internalType: "address", 172 | name: "", 173 | type: "address", 174 | }, 175 | { 176 | internalType: "address", 177 | name: "", 178 | type: "address", 179 | }, 180 | ], 181 | name: "isApprovedForAll", 182 | outputs: [ 183 | { 184 | internalType: "bool", 185 | name: "", 186 | type: "bool", 187 | }, 188 | ], 189 | stateMutability: "view", 190 | type: "function", 191 | }, 192 | { 193 | inputs: [], 194 | name: "mint", 195 | outputs: [], 196 | stateMutability: "payable", 197 | type: "function", 198 | }, 199 | { 200 | inputs: [], 201 | name: "name", 202 | outputs: [ 203 | { 204 | internalType: "string", 205 | name: "", 206 | type: "string", 207 | }, 208 | ], 209 | stateMutability: "view", 210 | type: "function", 211 | }, 212 | { 213 | inputs: [], 214 | name: "nextTokenId", 215 | outputs: [ 216 | { 217 | internalType: "uint256", 218 | name: "", 219 | type: "uint256", 220 | }, 221 | ], 222 | stateMutability: "view", 223 | type: "function", 224 | }, 225 | { 226 | inputs: [ 227 | { 228 | internalType: "uint256", 229 | name: "id", 230 | type: "uint256", 231 | }, 232 | ], 233 | name: "ownerOf", 234 | outputs: [ 235 | { 236 | internalType: "address", 237 | name: "owner", 238 | type: "address", 239 | }, 240 | ], 241 | stateMutability: "view", 242 | type: "function", 243 | }, 244 | { 245 | inputs: [ 246 | { 247 | internalType: "address", 248 | name: "from", 249 | type: "address", 250 | }, 251 | { 252 | internalType: "address", 253 | name: "to", 254 | type: "address", 255 | }, 256 | { 257 | internalType: "uint256", 258 | name: "id", 259 | type: "uint256", 260 | }, 261 | ], 262 | name: "safeTransferFrom", 263 | outputs: [], 264 | stateMutability: "nonpayable", 265 | type: "function", 266 | }, 267 | { 268 | inputs: [ 269 | { 270 | internalType: "address", 271 | name: "from", 272 | type: "address", 273 | }, 274 | { 275 | internalType: "address", 276 | name: "to", 277 | type: "address", 278 | }, 279 | { 280 | internalType: "uint256", 281 | name: "id", 282 | type: "uint256", 283 | }, 284 | { 285 | internalType: "bytes", 286 | name: "data", 287 | type: "bytes", 288 | }, 289 | ], 290 | name: "safeTransferFrom", 291 | outputs: [], 292 | stateMutability: "nonpayable", 293 | type: "function", 294 | }, 295 | { 296 | inputs: [ 297 | { 298 | internalType: "address", 299 | name: "operator", 300 | type: "address", 301 | }, 302 | { 303 | internalType: "bool", 304 | name: "approved", 305 | type: "bool", 306 | }, 307 | ], 308 | name: "setApprovalForAll", 309 | outputs: [], 310 | stateMutability: "nonpayable", 311 | type: "function", 312 | }, 313 | { 314 | inputs: [ 315 | { 316 | internalType: "bytes4", 317 | name: "interfaceId", 318 | type: "bytes4", 319 | }, 320 | ], 321 | name: "supportsInterface", 322 | outputs: [ 323 | { 324 | internalType: "bool", 325 | name: "", 326 | type: "bool", 327 | }, 328 | ], 329 | stateMutability: "view", 330 | type: "function", 331 | }, 332 | { 333 | inputs: [], 334 | name: "symbol", 335 | outputs: [ 336 | { 337 | internalType: "string", 338 | name: "", 339 | type: "string", 340 | }, 341 | ], 342 | stateMutability: "view", 343 | type: "function", 344 | }, 345 | { 346 | inputs: [ 347 | { 348 | internalType: "uint256", 349 | name: "", 350 | type: "uint256", 351 | }, 352 | ], 353 | name: "tokenURI", 354 | outputs: [ 355 | { 356 | internalType: "string", 357 | name: "", 358 | type: "string", 359 | }, 360 | ], 361 | stateMutability: "view", 362 | type: "function", 363 | }, 364 | { 365 | inputs: [ 366 | { 367 | internalType: "address", 368 | name: "from", 369 | type: "address", 370 | }, 371 | { 372 | internalType: "address", 373 | name: "to", 374 | type: "address", 375 | }, 376 | { 377 | internalType: "uint256", 378 | name: "id", 379 | type: "uint256", 380 | }, 381 | ], 382 | name: "transferFrom", 383 | outputs: [], 384 | stateMutability: "nonpayable", 385 | type: "function", 386 | }, 387 | ] as const; 388 | 389 | const _bytecode = 390 | "0x60806040523480156200001157600080fd5b5060405162001780380380620017808339810160408190526200003491620000d8565b6040518060400160405280601a81526020017f496e74726f647563696e67205a4b502057616c6c6574204e4654000000000000815250604051806040016040528060048152602001630495a4b560e41b81525081600090816200009891906200023c565b506001620000a782826200023c565b5060069150620000ba905082826200023c565b505062000308565b634e487b7160e01b600052604160045260246000fd5b60006020808385031215620000ec57600080fd5b82516001600160401b03808211156200010457600080fd5b818501915085601f8301126200011957600080fd5b8151818111156200012e576200012e620000c2565b604051601f8201601f19908116603f01168101908382118183101715620001595762000159620000c2565b8160405282815288868487010111156200017257600080fd5b600093505b8284101562000196578484018601518185018701529285019262000177565b600086848301015280965050505050505092915050565b600181811c90821680620001c257607f821691505b602082108103620001e357634e487b7160e01b600052602260045260246000fd5b50919050565b601f8211156200023757600081815260208120601f850160051c81016020861015620002125750805b601f850160051c820191505b8181101562000233578281556001016200021e565b5050505b505050565b81516001600160401b03811115620002585762000258620000c2565b6200027081620002698454620001ad565b84620001e9565b602080601f831160018114620002a857600084156200028f5750858301515b600019600386901b1c1916600185901b17855562000233565b600085815260208120601f198616915b82811015620002d957888601518255948401946001909101908401620002b8565b5085821015620002f85787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b61146880620003186000396000f3fe6080604052600436106100f35760003560e01c80636352211e1161008a578063a22cb46511610059578063a22cb465146102b0578063b88d4fde146102d0578063c87b56dd146102f0578063e985e9c51461031057600080fd5b80636352211e1461024557806370a082311461026557806375794a3c1461028557806395d89b411461029b57600080fd5b80631249c58b116100c65780631249c58b146101d957806323b872dd146101e157806327efc0861461020157806342842e0e1461022557600080fd5b806301ffc9a7146100f857806306fdde031461012d578063081812fc1461014f578063095ea7b3146101b7575b600080fd5b34801561010457600080fd5b5061011861011336600461108c565b61034b565b60405190151581526020015b60405180910390f35b34801561013957600080fd5b50610142610430565b60405161012491906110b0565b34801561015b57600080fd5b5061019261016a36600461111c565b60046020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60405173ffffffffffffffffffffffffffffffffffffffff9091168152602001610124565b3480156101c357600080fd5b506101d76101d2366004611159565b6104be565b005b6101d76105f3565b3480156101ed57600080fd5b506101d76101fc366004611183565b610665565b34801561020d57600080fd5b5061021761271081565b604051908152602001610124565b34801561023157600080fd5b506101d7610240366004611183565b6108de565b34801561025157600080fd5b5061019261026036600461111c565b610a2e565b34801561027157600080fd5b506102176102803660046111bf565b610aa5565b34801561029157600080fd5b5061021760075481565b3480156102a757600080fd5b50610142610b33565b3480156102bc57600080fd5b506101d76102cb3660046111da565b610b40565b3480156102dc57600080fd5b506101d76102eb366004611216565b610bd7565b3480156102fc57600080fd5b5061014261030b36600461111c565b610d17565b34801561031c57600080fd5b5061011861032b3660046112b1565b600560209081526000928352604080842090915290825290205460ff1681565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007fffffffff00000000000000000000000000000000000000000000000000000000831614806103de57507f80ac58cd000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b8061042a57507f5b5e139f000000000000000000000000000000000000000000000000000000007fffffffff000000000000000000000000000000000000000000000000000000008316145b92915050565b6000805461043d906112e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610469906112e4565b80156104b65780601f1061048b576101008083540402835291602001916104b6565b820191906000526020600020905b81548152906001019060200180831161049957829003601f168201915b505050505081565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1633811480610521575073ffffffffffffffffffffffffffffffffffffffff8116600090815260056020908152604080832033845290915290205460ff165b6105725760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a454400000000000000000000000000000000000060448201526064015b60405180910390fd5b60008281526004602052604080822080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff87811691821790925591518593918516917f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591a4505050565b612710600754106106465760405162461bcd60e51b815260206004820152600a60248201527f6d696e7420656e646564000000000000000000000000000000000000000000006044820152606401610569565b6106633360076000815461065990611337565b9182905550610dab565b565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff8481169116146106db5760405162461bcd60e51b815260206004820152600a60248201527f57524f4e475f46524f4d000000000000000000000000000000000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff821661073e5760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610569565b3373ffffffffffffffffffffffffffffffffffffffff84161480610792575073ffffffffffffffffffffffffffffffffffffffff8316600090815260056020908152604080832033845290915290205460ff165b806107c0575060008181526004602052604090205473ffffffffffffffffffffffffffffffffffffffff1633145b61080c5760405162461bcd60e51b815260206004820152600e60248201527f4e4f545f415554484f52495a45440000000000000000000000000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260036020908152604080832080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff019055938616808352848320805460010190558583526002825284832080547fffffffffffffffffffffffff00000000000000000000000000000000000000009081168317909155600490925284832080549092169091559251849392917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b6108e9838383610665565b73ffffffffffffffffffffffffffffffffffffffff82163b15806109dd57506040517f150b7a020000000000000000000000000000000000000000000000000000000080825233600483015273ffffffffffffffffffffffffffffffffffffffff858116602484015260448301849052608060648401526000608484015290919084169063150b7a029060a4016020604051808303816000875af1158015610995573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109b99190611396565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610a295760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610569565b505050565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1680610aa05760405162461bcd60e51b815260206004820152600a60248201527f4e4f545f4d494e544544000000000000000000000000000000000000000000006044820152606401610569565b919050565b600073ffffffffffffffffffffffffffffffffffffffff8216610b0a5760405162461bcd60e51b815260206004820152600c60248201527f5a45524f5f4144445245535300000000000000000000000000000000000000006044820152606401610569565b5073ffffffffffffffffffffffffffffffffffffffff1660009081526003602052604090205490565b6001805461043d906112e4565b33600081815260056020908152604080832073ffffffffffffffffffffffffffffffffffffffff87168085529083529281902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b610be2858585610665565b73ffffffffffffffffffffffffffffffffffffffff84163b1580610cc457506040517f150b7a02000000000000000000000000000000000000000000000000000000008082529073ffffffffffffffffffffffffffffffffffffffff86169063150b7a0290610c5d9033908a908990899089906004016113b3565b6020604051808303816000875af1158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190611396565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610d105760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610569565b5050505050565b606060068054610d26906112e4565b80601f0160208091040260200160405190810160405280929190818152602001828054610d52906112e4565b8015610d9f5780601f10610d7457610100808354040283529160200191610d9f565b820191906000526020600020905b815481529060010190602001808311610d8257829003601f168201915b50505050509050919050565b610db58282610ef6565b73ffffffffffffffffffffffffffffffffffffffff82163b1580610ea657506040517f150b7a0200000000000000000000000000000000000000000000000000000000808252336004830152600060248301819052604483018490526080606484015260848301529073ffffffffffffffffffffffffffffffffffffffff84169063150b7a029060a4016020604051808303816000875af1158015610e5e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e829190611396565b7fffffffff0000000000000000000000000000000000000000000000000000000016145b610ef25760405162461bcd60e51b815260206004820152601060248201527f554e534146455f524543495049454e54000000000000000000000000000000006044820152606401610569565b5050565b73ffffffffffffffffffffffffffffffffffffffff8216610f595760405162461bcd60e51b815260206004820152601160248201527f494e56414c49445f524543495049454e540000000000000000000000000000006044820152606401610569565b60008181526002602052604090205473ffffffffffffffffffffffffffffffffffffffff1615610fcb5760405162461bcd60e51b815260206004820152600e60248201527f414c52454144595f4d494e5445440000000000000000000000000000000000006044820152606401610569565b73ffffffffffffffffffffffffffffffffffffffff8216600081815260036020908152604080832080546001019055848352600290915280822080547fffffffffffffffffffffffff0000000000000000000000000000000000000000168417905551839291907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b7fffffffff000000000000000000000000000000000000000000000000000000008116811461108957600080fd5b50565b60006020828403121561109e57600080fd5b81356110a98161105b565b9392505050565b600060208083528351808285015260005b818110156110dd578581018301518582016040015282016110c1565b5060006040828601015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8301168501019250505092915050565b60006020828403121561112e57600080fd5b5035919050565b803573ffffffffffffffffffffffffffffffffffffffff81168114610aa057600080fd5b6000806040838503121561116c57600080fd5b61117583611135565b946020939093013593505050565b60008060006060848603121561119857600080fd5b6111a184611135565b92506111af60208501611135565b9150604084013590509250925092565b6000602082840312156111d157600080fd5b6110a982611135565b600080604083850312156111ed57600080fd5b6111f683611135565b91506020830135801515811461120b57600080fd5b809150509250929050565b60008060008060006080868803121561122e57600080fd5b61123786611135565b945061124560208701611135565b935060408601359250606086013567ffffffffffffffff8082111561126957600080fd5b818801915088601f83011261127d57600080fd5b81358181111561128c57600080fd5b89602082850101111561129e57600080fd5b9699959850939650602001949392505050565b600080604083850312156112c457600080fd5b6112cd83611135565b91506112db60208401611135565b90509250929050565b600181811c908216806112f857607f821691505b602082108103611331577f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b50919050565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361138f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b6000602082840312156113a857600080fd5b81516110a98161105b565b600073ffffffffffffffffffffffffffffffffffffffff808816835280871660208401525084604083015260806060830152826080830152828460a0840137600060a0848401015260a07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f8501168301019050969550505050505056fea2646970667358221220de062ae5a0cf69635d73246e44064dd2835ec33df9f88660a8ac48641d3f9c6564736f6c63430008110033"; 391 | 392 | type ZKPWalletNFTConstructorParams = 393 | | [signer?: Signer] 394 | | ConstructorParameters; 395 | 396 | const isSuperArgs = ( 397 | xs: ZKPWalletNFTConstructorParams 398 | ): xs is ConstructorParameters => xs.length > 1; 399 | 400 | export class ZKPWalletNFT__factory extends ContractFactory { 401 | constructor(...args: ZKPWalletNFTConstructorParams) { 402 | if (isSuperArgs(args)) { 403 | super(...args); 404 | } else { 405 | super(_abi, _bytecode, args[0]); 406 | } 407 | } 408 | 409 | override deploy( 410 | _uri: PromiseOrValue, 411 | overrides?: Overrides & { from?: PromiseOrValue } 412 | ): Promise { 413 | return super.deploy(_uri, overrides || {}) as Promise; 414 | } 415 | override getDeployTransaction( 416 | _uri: PromiseOrValue, 417 | overrides?: Overrides & { from?: PromiseOrValue } 418 | ): TransactionRequest { 419 | return super.getDeployTransaction(_uri, overrides || {}); 420 | } 421 | override attach(address: string): ZKPWalletNFT { 422 | return super.attach(address) as ZKPWalletNFT; 423 | } 424 | override connect(signer: Signer): ZKPWalletNFT__factory { 425 | return super.connect(signer) as ZKPWalletNFT__factory; 426 | } 427 | 428 | static readonly bytecode = _bytecode; 429 | static readonly abi = _abi; 430 | static createInterface(): ZKPWalletNFTInterface { 431 | return new utils.Interface(_abi) as ZKPWalletNFTInterface; 432 | } 433 | static connect( 434 | address: string, 435 | signerOrProvider: Signer | Provider 436 | ): ZKPWalletNFT { 437 | return new Contract(address, _abi, signerOrProvider) as ZKPWalletNFT; 438 | } 439 | } 440 | -------------------------------------------------------------------------------- /src/contracts/ZKPassAccountFactory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { 5 | BaseContract, 6 | BigNumber, 7 | BigNumberish, 8 | BytesLike, 9 | CallOverrides, 10 | ContractTransaction, 11 | Overrides, 12 | PopulatedTransaction, 13 | Signer, 14 | utils, 15 | } from "ethers"; 16 | import type { 17 | FunctionFragment, 18 | Result, 19 | EventFragment, 20 | } from "@ethersproject/abi"; 21 | import type { Listener, Provider } from "@ethersproject/providers"; 22 | import type { 23 | TypedEventFilter, 24 | TypedEvent, 25 | TypedListener, 26 | OnEvent, 27 | PromiseOrValue, 28 | } from "./common"; 29 | 30 | export interface ZKPassAccountFactoryInterface extends utils.Interface { 31 | functions: { 32 | "accountImplementation()": FunctionFragment; 33 | "baseName()": FunctionFragment; 34 | "baseNode()": FunctionFragment; 35 | "createAccount(string,uint256)": FunctionFragment; 36 | "getAddress(string,uint256)": FunctionFragment; 37 | "nameWrapper()": FunctionFragment; 38 | "onERC1155Received(address,address,uint256,uint256,bytes)": FunctionFragment; 39 | "owner()": FunctionFragment; 40 | "renounceOwnership()": FunctionFragment; 41 | "resolver()": FunctionFragment; 42 | "reverseRegistrar()": FunctionFragment; 43 | "transferOwnership(address)": FunctionFragment; 44 | }; 45 | 46 | getFunction( 47 | nameOrSignatureOrTopic: 48 | | "accountImplementation" 49 | | "baseName" 50 | | "baseNode" 51 | | "createAccount" 52 | | "getAddress" 53 | | "nameWrapper" 54 | | "onERC1155Received" 55 | | "owner" 56 | | "renounceOwnership" 57 | | "resolver" 58 | | "reverseRegistrar" 59 | | "transferOwnership" 60 | ): FunctionFragment; 61 | 62 | encodeFunctionData( 63 | functionFragment: "accountImplementation", 64 | values?: undefined 65 | ): string; 66 | encodeFunctionData(functionFragment: "baseName", values?: undefined): string; 67 | encodeFunctionData(functionFragment: "baseNode", values?: undefined): string; 68 | encodeFunctionData( 69 | functionFragment: "createAccount", 70 | values: [PromiseOrValue, PromiseOrValue] 71 | ): string; 72 | encodeFunctionData( 73 | functionFragment: "getAddress", 74 | values: [PromiseOrValue, PromiseOrValue] 75 | ): string; 76 | encodeFunctionData( 77 | functionFragment: "nameWrapper", 78 | values?: undefined 79 | ): string; 80 | encodeFunctionData( 81 | functionFragment: "onERC1155Received", 82 | values: [ 83 | PromiseOrValue, 84 | PromiseOrValue, 85 | PromiseOrValue, 86 | PromiseOrValue, 87 | PromiseOrValue 88 | ] 89 | ): string; 90 | encodeFunctionData(functionFragment: "owner", values?: undefined): string; 91 | encodeFunctionData( 92 | functionFragment: "renounceOwnership", 93 | values?: undefined 94 | ): string; 95 | encodeFunctionData(functionFragment: "resolver", values?: undefined): string; 96 | encodeFunctionData( 97 | functionFragment: "reverseRegistrar", 98 | values?: undefined 99 | ): string; 100 | encodeFunctionData( 101 | functionFragment: "transferOwnership", 102 | values: [PromiseOrValue] 103 | ): string; 104 | 105 | decodeFunctionResult( 106 | functionFragment: "accountImplementation", 107 | data: BytesLike 108 | ): Result; 109 | decodeFunctionResult(functionFragment: "baseName", data: BytesLike): Result; 110 | decodeFunctionResult(functionFragment: "baseNode", data: BytesLike): Result; 111 | decodeFunctionResult( 112 | functionFragment: "createAccount", 113 | data: BytesLike 114 | ): Result; 115 | decodeFunctionResult(functionFragment: "getAddress", data: BytesLike): Result; 116 | decodeFunctionResult( 117 | functionFragment: "nameWrapper", 118 | data: BytesLike 119 | ): Result; 120 | decodeFunctionResult( 121 | functionFragment: "onERC1155Received", 122 | data: BytesLike 123 | ): Result; 124 | decodeFunctionResult(functionFragment: "owner", data: BytesLike): Result; 125 | decodeFunctionResult( 126 | functionFragment: "renounceOwnership", 127 | data: BytesLike 128 | ): Result; 129 | decodeFunctionResult(functionFragment: "resolver", data: BytesLike): Result; 130 | decodeFunctionResult( 131 | functionFragment: "reverseRegistrar", 132 | data: BytesLike 133 | ): Result; 134 | decodeFunctionResult( 135 | functionFragment: "transferOwnership", 136 | data: BytesLike 137 | ): Result; 138 | 139 | events: { 140 | "OwnershipTransferred(address,address)": EventFragment; 141 | }; 142 | 143 | getEvent(nameOrSignatureOrTopic: "OwnershipTransferred"): EventFragment; 144 | } 145 | 146 | export interface OwnershipTransferredEventObject { 147 | previousOwner: string; 148 | newOwner: string; 149 | } 150 | export type OwnershipTransferredEvent = TypedEvent< 151 | [string, string], 152 | OwnershipTransferredEventObject 153 | >; 154 | 155 | export type OwnershipTransferredEventFilter = 156 | TypedEventFilter; 157 | 158 | export interface ZKPassAccountFactory extends BaseContract { 159 | connect(signerOrProvider: Signer | Provider | string): this; 160 | attach(addressOrName: string): this; 161 | deployed(): Promise; 162 | 163 | interface: ZKPassAccountFactoryInterface; 164 | 165 | queryFilter( 166 | event: TypedEventFilter, 167 | fromBlockOrBlockhash?: string | number | undefined, 168 | toBlock?: string | number | undefined 169 | ): Promise>; 170 | 171 | listeners( 172 | eventFilter?: TypedEventFilter 173 | ): Array>; 174 | listeners(eventName?: string): Array; 175 | removeAllListeners( 176 | eventFilter: TypedEventFilter 177 | ): this; 178 | removeAllListeners(eventName?: string): this; 179 | off: OnEvent; 180 | on: OnEvent; 181 | once: OnEvent; 182 | removeListener: OnEvent; 183 | 184 | functions: { 185 | accountImplementation(overrides?: CallOverrides): Promise<[string]>; 186 | 187 | baseName(overrides?: CallOverrides): Promise<[string]>; 188 | 189 | baseNode(overrides?: CallOverrides): Promise<[string]>; 190 | 191 | createAccount( 192 | label: PromiseOrValue, 193 | passHash: PromiseOrValue, 194 | overrides?: Overrides & { from?: PromiseOrValue } 195 | ): Promise; 196 | 197 | getAddress( 198 | label: PromiseOrValue, 199 | passHash: PromiseOrValue, 200 | overrides?: CallOverrides 201 | ): Promise<[string]>; 202 | 203 | nameWrapper(overrides?: CallOverrides): Promise<[string]>; 204 | 205 | onERC1155Received( 206 | arg0: PromiseOrValue, 207 | arg1: PromiseOrValue, 208 | arg2: PromiseOrValue, 209 | arg3: PromiseOrValue, 210 | arg4: PromiseOrValue, 211 | overrides?: CallOverrides 212 | ): Promise<[string]>; 213 | 214 | owner(overrides?: CallOverrides): Promise<[string]>; 215 | 216 | renounceOwnership( 217 | overrides?: Overrides & { from?: PromiseOrValue } 218 | ): Promise; 219 | 220 | resolver(overrides?: CallOverrides): Promise<[string]>; 221 | 222 | reverseRegistrar(overrides?: CallOverrides): Promise<[string]>; 223 | 224 | transferOwnership( 225 | newOwner: PromiseOrValue, 226 | overrides?: Overrides & { from?: PromiseOrValue } 227 | ): Promise; 228 | }; 229 | 230 | accountImplementation(overrides?: CallOverrides): Promise; 231 | 232 | baseName(overrides?: CallOverrides): Promise; 233 | 234 | baseNode(overrides?: CallOverrides): Promise; 235 | 236 | createAccount( 237 | label: PromiseOrValue, 238 | passHash: PromiseOrValue, 239 | overrides?: Overrides & { from?: PromiseOrValue } 240 | ): Promise; 241 | 242 | getAddress( 243 | label: PromiseOrValue, 244 | passHash: PromiseOrValue, 245 | overrides?: CallOverrides 246 | ): Promise; 247 | 248 | nameWrapper(overrides?: CallOverrides): Promise; 249 | 250 | onERC1155Received( 251 | arg0: PromiseOrValue, 252 | arg1: PromiseOrValue, 253 | arg2: PromiseOrValue, 254 | arg3: PromiseOrValue, 255 | arg4: PromiseOrValue, 256 | overrides?: CallOverrides 257 | ): Promise; 258 | 259 | owner(overrides?: CallOverrides): Promise; 260 | 261 | renounceOwnership( 262 | overrides?: Overrides & { from?: PromiseOrValue } 263 | ): Promise; 264 | 265 | resolver(overrides?: CallOverrides): Promise; 266 | 267 | reverseRegistrar(overrides?: CallOverrides): Promise; 268 | 269 | transferOwnership( 270 | newOwner: PromiseOrValue, 271 | overrides?: Overrides & { from?: PromiseOrValue } 272 | ): Promise; 273 | 274 | callStatic: { 275 | accountImplementation(overrides?: CallOverrides): Promise; 276 | 277 | baseName(overrides?: CallOverrides): Promise; 278 | 279 | baseNode(overrides?: CallOverrides): Promise; 280 | 281 | createAccount( 282 | label: PromiseOrValue, 283 | passHash: PromiseOrValue, 284 | overrides?: CallOverrides 285 | ): Promise; 286 | 287 | getAddress( 288 | label: PromiseOrValue, 289 | passHash: PromiseOrValue, 290 | overrides?: CallOverrides 291 | ): Promise; 292 | 293 | nameWrapper(overrides?: CallOverrides): Promise; 294 | 295 | onERC1155Received( 296 | arg0: PromiseOrValue, 297 | arg1: PromiseOrValue, 298 | arg2: PromiseOrValue, 299 | arg3: PromiseOrValue, 300 | arg4: PromiseOrValue, 301 | overrides?: CallOverrides 302 | ): Promise; 303 | 304 | owner(overrides?: CallOverrides): Promise; 305 | 306 | renounceOwnership(overrides?: CallOverrides): Promise; 307 | 308 | resolver(overrides?: CallOverrides): Promise; 309 | 310 | reverseRegistrar(overrides?: CallOverrides): Promise; 311 | 312 | transferOwnership( 313 | newOwner: PromiseOrValue, 314 | overrides?: CallOverrides 315 | ): Promise; 316 | }; 317 | 318 | filters: { 319 | "OwnershipTransferred(address,address)"( 320 | previousOwner?: PromiseOrValue | null, 321 | newOwner?: PromiseOrValue | null 322 | ): OwnershipTransferredEventFilter; 323 | OwnershipTransferred( 324 | previousOwner?: PromiseOrValue | null, 325 | newOwner?: PromiseOrValue | null 326 | ): OwnershipTransferredEventFilter; 327 | }; 328 | 329 | estimateGas: { 330 | accountImplementation(overrides?: CallOverrides): Promise; 331 | 332 | baseName(overrides?: CallOverrides): Promise; 333 | 334 | baseNode(overrides?: CallOverrides): Promise; 335 | 336 | createAccount( 337 | label: PromiseOrValue, 338 | passHash: PromiseOrValue, 339 | overrides?: Overrides & { from?: PromiseOrValue } 340 | ): Promise; 341 | 342 | getAddress( 343 | label: PromiseOrValue, 344 | passHash: PromiseOrValue, 345 | overrides?: CallOverrides 346 | ): Promise; 347 | 348 | nameWrapper(overrides?: CallOverrides): Promise; 349 | 350 | onERC1155Received( 351 | arg0: PromiseOrValue, 352 | arg1: PromiseOrValue, 353 | arg2: PromiseOrValue, 354 | arg3: PromiseOrValue, 355 | arg4: PromiseOrValue, 356 | overrides?: CallOverrides 357 | ): Promise; 358 | 359 | owner(overrides?: CallOverrides): Promise; 360 | 361 | renounceOwnership( 362 | overrides?: Overrides & { from?: PromiseOrValue } 363 | ): Promise; 364 | 365 | resolver(overrides?: CallOverrides): Promise; 366 | 367 | reverseRegistrar(overrides?: CallOverrides): Promise; 368 | 369 | transferOwnership( 370 | newOwner: PromiseOrValue, 371 | overrides?: Overrides & { from?: PromiseOrValue } 372 | ): Promise; 373 | }; 374 | 375 | populateTransaction: { 376 | accountImplementation( 377 | overrides?: CallOverrides 378 | ): Promise; 379 | 380 | baseName(overrides?: CallOverrides): Promise; 381 | 382 | baseNode(overrides?: CallOverrides): Promise; 383 | 384 | createAccount( 385 | label: PromiseOrValue, 386 | passHash: PromiseOrValue, 387 | overrides?: Overrides & { from?: PromiseOrValue } 388 | ): Promise; 389 | 390 | getAddress( 391 | label: PromiseOrValue, 392 | passHash: PromiseOrValue, 393 | overrides?: CallOverrides 394 | ): Promise; 395 | 396 | nameWrapper(overrides?: CallOverrides): Promise; 397 | 398 | onERC1155Received( 399 | arg0: PromiseOrValue, 400 | arg1: PromiseOrValue, 401 | arg2: PromiseOrValue, 402 | arg3: PromiseOrValue, 403 | arg4: PromiseOrValue, 404 | overrides?: CallOverrides 405 | ): Promise; 406 | 407 | owner(overrides?: CallOverrides): Promise; 408 | 409 | renounceOwnership( 410 | overrides?: Overrides & { from?: PromiseOrValue } 411 | ): Promise; 412 | 413 | resolver(overrides?: CallOverrides): Promise; 414 | 415 | reverseRegistrar(overrides?: CallOverrides): Promise; 416 | 417 | transferOwnership( 418 | newOwner: PromiseOrValue, 419 | overrides?: Overrides & { from?: PromiseOrValue } 420 | ): Promise; 421 | }; 422 | } 423 | -------------------------------------------------------------------------------- /src/contracts/ZKPassAccount__factory.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import { Signer, utils, Contract, ContractFactory, Overrides } from "ethers"; 5 | import type { Provider, TransactionRequest } from "@ethersproject/providers"; 6 | import type { PromiseOrValue } from "./common"; 7 | import type { 8 | ZKPassAccount, 9 | ZKPassAccountInterface, 10 | } from "./ZKPassAccount"; 11 | 12 | const _abi = [ 13 | { 14 | inputs: [ 15 | { 16 | internalType: "contract IEntryPoint", 17 | name: "anEntryPoint", 18 | type: "address", 19 | }, 20 | { 21 | internalType: "contract IVerifier", 22 | name: "aVerifier", 23 | type: "address", 24 | }, 25 | { 26 | internalType: "contract IEmailGuardian", 27 | name: "anEmailGuardian", 28 | type: "address", 29 | }, 30 | ], 31 | stateMutability: "nonpayable", 32 | type: "constructor", 33 | }, 34 | { 35 | anonymous: false, 36 | inputs: [ 37 | { 38 | indexed: true, 39 | internalType: "uint256", 40 | name: "passHash", 41 | type: "uint256", 42 | }, 43 | ], 44 | name: "AccountRecovered", 45 | type: "event", 46 | }, 47 | { 48 | anonymous: false, 49 | inputs: [ 50 | { 51 | indexed: false, 52 | internalType: "address", 53 | name: "previousAdmin", 54 | type: "address", 55 | }, 56 | { 57 | indexed: false, 58 | internalType: "address", 59 | name: "newAdmin", 60 | type: "address", 61 | }, 62 | ], 63 | name: "AdminChanged", 64 | type: "event", 65 | }, 66 | { 67 | anonymous: false, 68 | inputs: [ 69 | { 70 | indexed: true, 71 | internalType: "address", 72 | name: "beacon", 73 | type: "address", 74 | }, 75 | ], 76 | name: "BeaconUpgraded", 77 | type: "event", 78 | }, 79 | { 80 | anonymous: false, 81 | inputs: [ 82 | { 83 | indexed: true, 84 | internalType: "bytes32", 85 | name: "email", 86 | type: "bytes32", 87 | }, 88 | ], 89 | name: "EmailGuardianAdded", 90 | type: "event", 91 | }, 92 | { 93 | anonymous: false, 94 | inputs: [ 95 | { 96 | indexed: false, 97 | internalType: "uint8", 98 | name: "version", 99 | type: "uint8", 100 | }, 101 | ], 102 | name: "Initialized", 103 | type: "event", 104 | }, 105 | { 106 | anonymous: false, 107 | inputs: [ 108 | { 109 | indexed: true, 110 | internalType: "uint256", 111 | name: "passHash", 112 | type: "uint256", 113 | }, 114 | ], 115 | name: "PasswordChanged", 116 | type: "event", 117 | }, 118 | { 119 | anonymous: false, 120 | inputs: [ 121 | { 122 | indexed: true, 123 | internalType: "address", 124 | name: "implementation", 125 | type: "address", 126 | }, 127 | ], 128 | name: "Upgraded", 129 | type: "event", 130 | }, 131 | { 132 | anonymous: false, 133 | inputs: [ 134 | { 135 | indexed: true, 136 | internalType: "contract IEntryPoint", 137 | name: "entryPoint", 138 | type: "address", 139 | }, 140 | { 141 | indexed: true, 142 | internalType: "bytes32", 143 | name: "namaHash", 144 | type: "bytes32", 145 | }, 146 | { 147 | indexed: true, 148 | internalType: "uint256", 149 | name: "passHash", 150 | type: "uint256", 151 | }, 152 | ], 153 | name: "ZKPassAccountInitialized", 154 | type: "event", 155 | }, 156 | { 157 | inputs: [], 158 | name: "addDeposit", 159 | outputs: [], 160 | stateMutability: "payable", 161 | type: "function", 162 | }, 163 | { 164 | inputs: [ 165 | { 166 | internalType: "bytes32", 167 | name: "_email", 168 | type: "bytes32", 169 | }, 170 | ], 171 | name: "addEmailGuardian", 172 | outputs: [], 173 | stateMutability: "nonpayable", 174 | type: "function", 175 | }, 176 | { 177 | inputs: [ 178 | { 179 | internalType: "uint256", 180 | name: "_passHash", 181 | type: "uint256", 182 | }, 183 | ], 184 | name: "changePassword", 185 | outputs: [], 186 | stateMutability: "nonpayable", 187 | type: "function", 188 | }, 189 | { 190 | inputs: [], 191 | name: "email", 192 | outputs: [ 193 | { 194 | internalType: "bytes32", 195 | name: "", 196 | type: "bytes32", 197 | }, 198 | ], 199 | stateMutability: "view", 200 | type: "function", 201 | }, 202 | { 203 | inputs: [], 204 | name: "entryPoint", 205 | outputs: [ 206 | { 207 | internalType: "contract IEntryPoint", 208 | name: "", 209 | type: "address", 210 | }, 211 | ], 212 | stateMutability: "view", 213 | type: "function", 214 | }, 215 | { 216 | inputs: [ 217 | { 218 | internalType: "address", 219 | name: "dest", 220 | type: "address", 221 | }, 222 | { 223 | internalType: "uint256", 224 | name: "value", 225 | type: "uint256", 226 | }, 227 | { 228 | internalType: "bytes", 229 | name: "func", 230 | type: "bytes", 231 | }, 232 | ], 233 | name: "execute", 234 | outputs: [], 235 | stateMutability: "nonpayable", 236 | type: "function", 237 | }, 238 | { 239 | inputs: [ 240 | { 241 | internalType: "address[]", 242 | name: "dest", 243 | type: "address[]", 244 | }, 245 | { 246 | internalType: "bytes[]", 247 | name: "func", 248 | type: "bytes[]", 249 | }, 250 | ], 251 | name: "executeBatch", 252 | outputs: [], 253 | stateMutability: "nonpayable", 254 | type: "function", 255 | }, 256 | { 257 | inputs: [], 258 | name: "getDeposit", 259 | outputs: [ 260 | { 261 | internalType: "uint256", 262 | name: "", 263 | type: "uint256", 264 | }, 265 | ], 266 | stateMutability: "view", 267 | type: "function", 268 | }, 269 | { 270 | inputs: [], 271 | name: "getNonce", 272 | outputs: [ 273 | { 274 | internalType: "uint256", 275 | name: "", 276 | type: "uint256", 277 | }, 278 | ], 279 | stateMutability: "view", 280 | type: "function", 281 | }, 282 | { 283 | inputs: [ 284 | { 285 | internalType: "bytes32", 286 | name: "_nameHash", 287 | type: "bytes32", 288 | }, 289 | { 290 | internalType: "uint256", 291 | name: "_passHash", 292 | type: "uint256", 293 | }, 294 | { 295 | internalType: "address", 296 | name: "_owner", 297 | type: "address", 298 | }, 299 | ], 300 | name: "initialize", 301 | outputs: [], 302 | stateMutability: "nonpayable", 303 | type: "function", 304 | }, 305 | { 306 | inputs: [], 307 | name: "nameHash", 308 | outputs: [ 309 | { 310 | internalType: "bytes32", 311 | name: "", 312 | type: "bytes32", 313 | }, 314 | ], 315 | stateMutability: "view", 316 | type: "function", 317 | }, 318 | { 319 | inputs: [ 320 | { 321 | internalType: "address", 322 | name: "", 323 | type: "address", 324 | }, 325 | { 326 | internalType: "address", 327 | name: "", 328 | type: "address", 329 | }, 330 | { 331 | internalType: "uint256[]", 332 | name: "", 333 | type: "uint256[]", 334 | }, 335 | { 336 | internalType: "uint256[]", 337 | name: "", 338 | type: "uint256[]", 339 | }, 340 | { 341 | internalType: "bytes", 342 | name: "", 343 | type: "bytes", 344 | }, 345 | ], 346 | name: "onERC1155BatchReceived", 347 | outputs: [ 348 | { 349 | internalType: "bytes4", 350 | name: "", 351 | type: "bytes4", 352 | }, 353 | ], 354 | stateMutability: "pure", 355 | type: "function", 356 | }, 357 | { 358 | inputs: [ 359 | { 360 | internalType: "address", 361 | name: "", 362 | type: "address", 363 | }, 364 | { 365 | internalType: "address", 366 | name: "", 367 | type: "address", 368 | }, 369 | { 370 | internalType: "uint256", 371 | name: "", 372 | type: "uint256", 373 | }, 374 | { 375 | internalType: "uint256", 376 | name: "", 377 | type: "uint256", 378 | }, 379 | { 380 | internalType: "bytes", 381 | name: "", 382 | type: "bytes", 383 | }, 384 | ], 385 | name: "onERC1155Received", 386 | outputs: [ 387 | { 388 | internalType: "bytes4", 389 | name: "", 390 | type: "bytes4", 391 | }, 392 | ], 393 | stateMutability: "pure", 394 | type: "function", 395 | }, 396 | { 397 | inputs: [ 398 | { 399 | internalType: "address", 400 | name: "", 401 | type: "address", 402 | }, 403 | { 404 | internalType: "address", 405 | name: "", 406 | type: "address", 407 | }, 408 | { 409 | internalType: "uint256", 410 | name: "", 411 | type: "uint256", 412 | }, 413 | { 414 | internalType: "bytes", 415 | name: "", 416 | type: "bytes", 417 | }, 418 | ], 419 | name: "onERC721Received", 420 | outputs: [ 421 | { 422 | internalType: "bytes4", 423 | name: "", 424 | type: "bytes4", 425 | }, 426 | ], 427 | stateMutability: "pure", 428 | type: "function", 429 | }, 430 | { 431 | inputs: [], 432 | name: "owner", 433 | outputs: [ 434 | { 435 | internalType: "address", 436 | name: "", 437 | type: "address", 438 | }, 439 | ], 440 | stateMutability: "view", 441 | type: "function", 442 | }, 443 | { 444 | inputs: [], 445 | name: "passHash", 446 | outputs: [ 447 | { 448 | internalType: "uint256", 449 | name: "", 450 | type: "uint256", 451 | }, 452 | ], 453 | stateMutability: "view", 454 | type: "function", 455 | }, 456 | { 457 | inputs: [], 458 | name: "proxiableUUID", 459 | outputs: [ 460 | { 461 | internalType: "bytes32", 462 | name: "", 463 | type: "bytes32", 464 | }, 465 | ], 466 | stateMutability: "view", 467 | type: "function", 468 | }, 469 | { 470 | inputs: [ 471 | { 472 | internalType: "bytes32", 473 | name: "_server", 474 | type: "bytes32", 475 | }, 476 | { 477 | internalType: "bytes", 478 | name: "_data", 479 | type: "bytes", 480 | }, 481 | { 482 | internalType: "bytes", 483 | name: "_signature", 484 | type: "bytes", 485 | }, 486 | { 487 | internalType: "uint256", 488 | name: "_passHash", 489 | type: "uint256", 490 | }, 491 | ], 492 | name: "recovery", 493 | outputs: [], 494 | stateMutability: "nonpayable", 495 | type: "function", 496 | }, 497 | { 498 | inputs: [ 499 | { 500 | internalType: "bytes4", 501 | name: "interfaceId", 502 | type: "bytes4", 503 | }, 504 | ], 505 | name: "supportsInterface", 506 | outputs: [ 507 | { 508 | internalType: "bool", 509 | name: "", 510 | type: "bool", 511 | }, 512 | ], 513 | stateMutability: "view", 514 | type: "function", 515 | }, 516 | { 517 | inputs: [ 518 | { 519 | internalType: "uint256", 520 | name: "x", 521 | type: "uint256", 522 | }, 523 | ], 524 | name: "toBytes", 525 | outputs: [ 526 | { 527 | internalType: "bytes", 528 | name: "b", 529 | type: "bytes", 530 | }, 531 | ], 532 | stateMutability: "pure", 533 | type: "function", 534 | }, 535 | { 536 | inputs: [ 537 | { 538 | internalType: "address", 539 | name: "", 540 | type: "address", 541 | }, 542 | { 543 | internalType: "address", 544 | name: "", 545 | type: "address", 546 | }, 547 | { 548 | internalType: "address", 549 | name: "", 550 | type: "address", 551 | }, 552 | { 553 | internalType: "uint256", 554 | name: "", 555 | type: "uint256", 556 | }, 557 | { 558 | internalType: "bytes", 559 | name: "", 560 | type: "bytes", 561 | }, 562 | { 563 | internalType: "bytes", 564 | name: "", 565 | type: "bytes", 566 | }, 567 | ], 568 | name: "tokensReceived", 569 | outputs: [], 570 | stateMutability: "pure", 571 | type: "function", 572 | }, 573 | { 574 | inputs: [ 575 | { 576 | internalType: "address", 577 | name: "newImplementation", 578 | type: "address", 579 | }, 580 | ], 581 | name: "upgradeTo", 582 | outputs: [], 583 | stateMutability: "nonpayable", 584 | type: "function", 585 | }, 586 | { 587 | inputs: [ 588 | { 589 | internalType: "address", 590 | name: "newImplementation", 591 | type: "address", 592 | }, 593 | { 594 | internalType: "bytes", 595 | name: "data", 596 | type: "bytes", 597 | }, 598 | ], 599 | name: "upgradeToAndCall", 600 | outputs: [], 601 | stateMutability: "payable", 602 | type: "function", 603 | }, 604 | { 605 | inputs: [ 606 | { 607 | components: [ 608 | { 609 | internalType: "address", 610 | name: "sender", 611 | type: "address", 612 | }, 613 | { 614 | internalType: "uint256", 615 | name: "nonce", 616 | type: "uint256", 617 | }, 618 | { 619 | internalType: "bytes", 620 | name: "initCode", 621 | type: "bytes", 622 | }, 623 | { 624 | internalType: "bytes", 625 | name: "callData", 626 | type: "bytes", 627 | }, 628 | { 629 | internalType: "uint256", 630 | name: "callGasLimit", 631 | type: "uint256", 632 | }, 633 | { 634 | internalType: "uint256", 635 | name: "verificationGasLimit", 636 | type: "uint256", 637 | }, 638 | { 639 | internalType: "uint256", 640 | name: "preVerificationGas", 641 | type: "uint256", 642 | }, 643 | { 644 | internalType: "uint256", 645 | name: "maxFeePerGas", 646 | type: "uint256", 647 | }, 648 | { 649 | internalType: "uint256", 650 | name: "maxPriorityFeePerGas", 651 | type: "uint256", 652 | }, 653 | { 654 | internalType: "bytes", 655 | name: "paymasterAndData", 656 | type: "bytes", 657 | }, 658 | { 659 | internalType: "bytes", 660 | name: "signature", 661 | type: "bytes", 662 | }, 663 | ], 664 | internalType: "struct UserOperation", 665 | name: "userOp", 666 | type: "tuple", 667 | }, 668 | { 669 | internalType: "bytes32", 670 | name: "userOpHash", 671 | type: "bytes32", 672 | }, 673 | { 674 | internalType: "uint256", 675 | name: "missingAccountFunds", 676 | type: "uint256", 677 | }, 678 | ], 679 | name: "validateUserOp", 680 | outputs: [ 681 | { 682 | internalType: "uint256", 683 | name: "validationData", 684 | type: "uint256", 685 | }, 686 | ], 687 | stateMutability: "nonpayable", 688 | type: "function", 689 | }, 690 | { 691 | inputs: [], 692 | name: "verifier", 693 | outputs: [ 694 | { 695 | internalType: "contract IVerifier", 696 | name: "", 697 | type: "address", 698 | }, 699 | ], 700 | stateMutability: "view", 701 | type: "function", 702 | }, 703 | { 704 | inputs: [ 705 | { 706 | internalType: "bytes", 707 | name: "_proof", 708 | type: "bytes", 709 | }, 710 | { 711 | internalType: "uint256", 712 | name: "_opHash", 713 | type: "uint256", 714 | }, 715 | ], 716 | name: "verifyProof", 717 | outputs: [ 718 | { 719 | internalType: "bool", 720 | name: "", 721 | type: "bool", 722 | }, 723 | ], 724 | stateMutability: "view", 725 | type: "function", 726 | }, 727 | { 728 | inputs: [ 729 | { 730 | internalType: "address payable", 731 | name: "withdrawAddress", 732 | type: "address", 733 | }, 734 | { 735 | internalType: "uint256", 736 | name: "amount", 737 | type: "uint256", 738 | }, 739 | ], 740 | name: "withdrawDepositTo", 741 | outputs: [], 742 | stateMutability: "nonpayable", 743 | type: "function", 744 | }, 745 | { 746 | stateMutability: "payable", 747 | type: "receive", 748 | }, 749 | ] as const; 750 | 751 | const _bytecode = 752 | "0x610120604052306080527f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f000000160a0523480156200003a57600080fd5b50604051620029e6380380620029e68339810160408190526200005d9162000095565b6001600160a01b0392831660c05290821660e0521661010052620000e9565b6001600160a01b03811681146200009257600080fd5b50565b600080600060608486031215620000ab57600080fd5b8351620000b8816200007c565b6020850151909350620000cb816200007c565b6040850151909250620000de816200007c565b809150509250925092565b60805160a05160c05160e05161010051612864620001826000396000610e750152600081816102bc01526111130152600081816104ba01528181610a5801528181610b32015281816112dd015281816114b6015281816115b0015281816115f7015261191a015260006110810152600081816107f20152818161088801528181610bf601528181610c8c0152610dbb01526128646000f3fe6080604052600436106101af5760003560e01c806361c6ceef116100ec578063b61d27f61161008a578063c62b428e11610064578063c62b428e1461055b578063d087d2881461057b578063f172a4ce14610590578063f23a6e61146105a657600080fd5b8063b61d27f6146104de578063bc197c81146104fe578063c399ec881461054657600080fd5b80638da5cb5b116100c65780638da5cb5b1461044257806399a4453114610475578063a13de38914610495578063b0d691fe146104ab57600080fd5b806361c6ceef146103df578063775a8f5e146103ff578063820e93f51461042c57600080fd5b80633a871cdd116101595780634d44560d116101335780634d44560d146103775780634f1ef2861461039757806352d1902d146103aa5780635936807c146103bf57600080fd5b80633a871cdd146103215780634a1a2aff1461034f5780634a58db191461036f57600080fd5b806318dfb3c71161018a57806318dfb3c71461028d5780632b7ac3f3146102ad5780633659cfe61461030157600080fd5b806223de29146101bb57806301ffc9a7146101e2578063150b7a021461021757600080fd5b366101b657005b600080fd5b3480156101c757600080fd5b506101e06101d6366004611d95565b5050505050505050565b005b3480156101ee57600080fd5b506102026101fd366004611e46565b6105ec565b60405190151581526020015b60405180910390f35b34801561022357600080fd5b5061025c610232366004611e88565b7f150b7a020000000000000000000000000000000000000000000000000000000095945050505050565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200161020e565b34801561029957600080fd5b506101e06102a8366004611f40565b6106d1565b3480156102b957600080fd5b507f00000000000000000000000000000000000000000000000000000000000000005b60405173ffffffffffffffffffffffffffffffffffffffff909116815260200161020e565b34801561030d57600080fd5b506101e061031c366004611fac565b6107db565b34801561032d57600080fd5b5061034161033c366004611fc9565b6109ac565b60405190815260200161020e565b34801561035b57600080fd5b506101e061036a36600461201d565b6109d2565b6101e0610a54565b34801561038357600080fd5b506101e0610392366004612036565b610ae1565b6101e06103a5366004612091565b610bdf565b3480156103b657600080fd5b50610341610da1565b3480156103cb57600080fd5b506101e06103da366004612173565b610e73565b3480156103eb57600080fd5b506102026103fa3660046121f5565b610fab565b34801561040b57600080fd5b5061041f61041a36600461201d565b61119c565b60405161020e91906122af565b34801561043857600080fd5b5061034160035481565b34801561044e57600080fd5b506000546102dc9062010000900473ffffffffffffffffffffffffffffffffffffffff1681565b34801561048157600080fd5b506101e061049036600461201d565b6111c6565b3480156104a157600080fd5b5061034160025481565b3480156104b757600080fd5b507f00000000000000000000000000000000000000000000000000000000000000006102dc565b3480156104ea57600080fd5b506101e06104f93660046122c2565b611248565b34801561050a57600080fd5b5061025c610519366004612312565b7fbc197c810000000000000000000000000000000000000000000000000000000098975050505050505050565b34801561055257600080fd5b50610341611297565b34801561056757600080fd5b506101e06105763660046123b0565b61134e565b34801561058757600080fd5b50610341611563565b34801561059c57600080fd5b5061034160015481565b3480156105b257600080fd5b5061025c6105c13660046123e9565b7ff23a6e61000000000000000000000000000000000000000000000000000000009695505050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082167f150b7a0200000000000000000000000000000000000000000000000000000000148061067f57507fffffffff0000000000000000000000000000000000000000000000000000000082167f4e2312e000000000000000000000000000000000000000000000000000000000145b806106cb57507fffffffff0000000000000000000000000000000000000000000000000000000082167f01ffc9a700000000000000000000000000000000000000000000000000000000145b92915050565b6106d96115df565b82811461072d5760405162461bcd60e51b815260206004820152601360248201527f77726f6e67206172726179206c656e677468730000000000000000000000000060448201526064015b60405180910390fd5b60005b838110156107d4576107c285858381811061074d5761074d612465565b90506020020160208101906107629190611fac565b600085858581811061077657610776612465565b90506020028101906107889190612494565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166692505050565b806107cc816124f9565b915050610730565b5050505050565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001630036108865760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610724565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166108fb7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff16146109845760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610724565b61098d816116e3565b604080516000808252602082019092526109a991839190611732565b50565b60006109b6611902565b6109c08484611987565b90506109cb826119b5565b9392505050565b303314610a215760405162461bcd60e51b815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610724565b600281905560405181907f69421e634ab81a6413cb3cd515e7d4a9365c38b7012b1ac706fa50f65817a46a90600090a250565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163460405160006040518083038185875af1925050503d8060008114610ace576040519150601f19603f3d011682016040523d82523d6000602084013e610ad3565b606091505b50509050806109a957600080fd5b303314610b305760405162461bcd60e51b815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610724565b7f00000000000000000000000000000000000000000000000000000000000000006040517f205c287800000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff848116600483015260248201849052919091169063205c287890604401600060405180830381600087803b158015610bc357600080fd5b505af1158015610bd7573d6000803e3d6000fd5b505050505050565b73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000163003610c8a5760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f64656c656761746563616c6c00000000000000000000000000000000000000006064820152608401610724565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16610cff7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc5473ffffffffffffffffffffffffffffffffffffffff1690565b73ffffffffffffffffffffffffffffffffffffffff1614610d885760405162461bcd60e51b815260206004820152602c60248201527f46756e6374696f6e206d7573742062652063616c6c6564207468726f7567682060448201527f6163746976652070726f787900000000000000000000000000000000000000006064820152608401610724565b610d91826116e3565b610d9d82826001611732565b5050565b60003073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001614610e4e5760405162461bcd60e51b815260206004820152603860248201527f555550535570677261646561626c653a206d757374206e6f742062652063616c60448201527f6c6564207468726f7567682064656c656761746563616c6c00000000000000006064820152608401610724565b507f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc90565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16630ae362d7876003543089898989610ec18a61119c565b6040518963ffffffff1660e01b8152600401610ee49897969594939291906125a1565b6020604051808303816000875af1158015610f03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f279190612613565b610f735760405162461bcd60e51b815260206004820152601160248201527f696e76616c696420646b696d20646174610000000000000000000000000000006044820152606401610724565b600281905560405181907f8d0800983717a57679339099a6b5fa0d6c32cb1e3f2358eac8cee5109b4f0d4390600090a2505050505050565b6000610fb5611cdf565b610fbd611cfd565b610fc5611cdf565b6000806000806000806000808e8e60009061010092610fe693929190612635565b810190610ff3919061265f565b6040805180820182529889526020808a019890985280516080810182528082019788526060810196909652958552855180870187529384528387019290925283860192909252835180850190945290835292820192909252919c509a5098506000975061107196508d955061010094508593508e9250612635915050565b61107a916126b4565b90506110a67f0000000000000000000000000000000000000000000000000000000000000000876126f0565b95506000604051806080016040528060025481526020018381526020016110cb611563565b81526020018890526040517f5fe8c13b00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690635fe8c13b9061114e90889088908890879060040161274e565b602060405180830381865afa15801561116b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118f9190612613565b9998505050505050505050565b60408051602080825281830190925260609160208201818036833750505060208101929092525090565b3033146112155760405162461bcd60e51b815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610724565b600381905560405181907fd8adaafedab553012b2226f396e06cbdc69b9391df6050ac3ccac863bd4e946790600090a250565b6112506115df565b611291848484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061166692505050565b50505050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a08231906024015b602060405180830381865afa158015611325573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061134991906127d2565b905090565b600054610100900460ff161580801561136e5750600054600160ff909116105b806113885750303b158015611388575060005460ff166001145b6113fa5760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a65640000000000000000000000000000000000006064820152608401610724565b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00166001179055801561145857600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101001790555b600184905560028390556000805473ffffffffffffffffffffffffffffffffffffffff80851662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091178255604051859287927f000000000000000000000000000000000000000000000000000000000000000016917f55431516e10bd0917ebc953b5940f38069957d016c7c6bd08187700c86d995a89190a4801561129157600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050565b6040517f35567e1a0000000000000000000000000000000000000000000000000000000081523060048201526000602482018190529073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906335567e1a90604401611308565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146116645760405162461bcd60e51b815260206004820152601760248201527f6163636f756e743a206e6f7420456e747279506f696e740000000000000000006044820152606401610724565b565b6000808473ffffffffffffffffffffffffffffffffffffffff16848460405161168f91906127eb565b60006040518083038185875af1925050503d80600081146116cc576040519150601f19603f3d011682016040523d82523d6000602084013e6116d1565b606091505b5091509150816107d457805160208201fd5b3033146109a95760405162461bcd60e51b815260206004820152600a60248201527f6f6e6c79206f776e6572000000000000000000000000000000000000000000006044820152606401610724565b7f4910fdfa16fed3260ed0e7147f7cc6da11a60208b5b9406d12a635614ffd91435460ff161561176a5761176583611a20565b505050565b8273ffffffffffffffffffffffffffffffffffffffff166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156117ef575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526117ec918101906127d2565b60015b6118615760405162461bcd60e51b815260206004820152602e60248201527f45524331393637557067726164653a206e657720696d706c656d656e7461746960448201527f6f6e206973206e6f7420555550530000000000000000000000000000000000006064820152608401610724565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc81146118f65760405162461bcd60e51b815260206004820152602960248201527f45524331393637557067726164653a20756e737570706f727465642070726f7860448201527f6961626c655555494400000000000000000000000000000000000000000000006064820152608401610724565b50611765838383611b10565b3373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146116645760405162461bcd60e51b815260206004820152601c60248201527f6163636f756e743a206e6f742066726f6d20456e747279506f696e74000000006044820152606401610724565b60006119a061199a610140850185612494565b84610fab565b6119ac575060016106cb565b50600092915050565b80156109a95760405160009033907fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90849084818181858888f193505050503d80600081146107d4576040519150601f19603f3d011682016040523d82523d6000602084013e6107d4565b73ffffffffffffffffffffffffffffffffffffffff81163b611aaa5760405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201527f6f74206120636f6e7472616374000000000000000000000000000000000000006064820152608401610724565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc80547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b611b1983611b35565b600082511180611b265750805b15611765576112918383611b82565b611b3e81611a20565b60405173ffffffffffffffffffffffffffffffffffffffff8216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b60606109cb83836040518060600160405280602781526020016128086027913960606000808573ffffffffffffffffffffffffffffffffffffffff1685604051611bcc91906127eb565b600060405180830381855af49150503d8060008114611c07576040519150601f19603f3d011682016040523d82523d6000602084013e611c0c565b606091505b5091509150611c1d86838387611c27565b9695505050505050565b60608315611ca3578251600003611c9c5773ffffffffffffffffffffffffffffffffffffffff85163b611c9c5760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006044820152606401610724565b5081611cad565b611cad8383611cb5565b949350505050565b815115611cc55781518083602001fd5b8060405162461bcd60e51b815260040161072491906122af565b60405180604001604052806002906020820280368337509192915050565b60405180604001604052806002905b611d14611cdf565b815260200190600190039081611d0c5790505090565b73ffffffffffffffffffffffffffffffffffffffff811681146109a957600080fd5b60008083601f840112611d5e57600080fd5b50813567ffffffffffffffff811115611d7657600080fd5b602083019150836020828501011115611d8e57600080fd5b9250929050565b60008060008060008060008060c0898b031215611db157600080fd5b8835611dbc81611d2a565b97506020890135611dcc81611d2a565b96506040890135611ddc81611d2a565b955060608901359450608089013567ffffffffffffffff80821115611e0057600080fd5b611e0c8c838d01611d4c565b909650945060a08b0135915080821115611e2557600080fd5b50611e328b828c01611d4c565b999c989b5096995094979396929594505050565b600060208284031215611e5857600080fd5b81357fffffffff00000000000000000000000000000000000000000000000000000000811681146109cb57600080fd5b600080600080600060808688031215611ea057600080fd5b8535611eab81611d2a565b94506020860135611ebb81611d2a565b935060408601359250606086013567ffffffffffffffff811115611ede57600080fd5b611eea88828901611d4c565b969995985093965092949392505050565b60008083601f840112611f0d57600080fd5b50813567ffffffffffffffff811115611f2557600080fd5b6020830191508360208260051b8501011115611d8e57600080fd5b60008060008060408587031215611f5657600080fd5b843567ffffffffffffffff80821115611f6e57600080fd5b611f7a88838901611efb565b90965094506020870135915080821115611f9357600080fd5b50611fa087828801611efb565b95989497509550505050565b600060208284031215611fbe57600080fd5b81356109cb81611d2a565b600080600060608486031215611fde57600080fd5b833567ffffffffffffffff811115611ff557600080fd5b8401610160818703121561200857600080fd5b95602085013595506040909401359392505050565b60006020828403121561202f57600080fd5b5035919050565b6000806040838503121561204957600080fd5b823561205481611d2a565b946020939093013593505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080604083850312156120a457600080fd5b82356120af81611d2a565b9150602083013567ffffffffffffffff808211156120cc57600080fd5b818501915085601f8301126120e057600080fd5b8135818111156120f2576120f2612062565b604051601f82017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0908116603f0116810190838211818310171561213857612138612062565b8160405282815288602084870101111561215157600080fd5b8260208601602083013760006020848301015280955050505050509250929050565b6000806000806000806080878903121561218c57600080fd5b86359550602087013567ffffffffffffffff808211156121ab57600080fd5b6121b78a838b01611d4c565b909750955060408901359150808211156121d057600080fd5b506121dd89828a01611d4c565b979a9699509497949695606090950135949350505050565b60008060006040848603121561220a57600080fd5b833567ffffffffffffffff81111561222157600080fd5b61222d86828701611d4c565b909790965060209590950135949350505050565b60005b8381101561225c578181015183820152602001612244565b50506000910152565b6000815180845261227d816020860160208601612241565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6020815260006109cb6020830184612265565b600080600080606085870312156122d857600080fd5b84356122e381611d2a565b935060208501359250604085013567ffffffffffffffff81111561230657600080fd5b611fa087828801611d4c565b60008060008060008060008060a0898b03121561232e57600080fd5b883561233981611d2a565b9750602089013561234981611d2a565b9650604089013567ffffffffffffffff8082111561236657600080fd5b6123728c838d01611efb565b909850965060608b013591508082111561238b57600080fd5b6123978c838d01611efb565b909650945060808b0135915080821115611e2557600080fd5b6000806000606084860312156123c557600080fd5b833592506020840135915060408401356123de81611d2a565b809150509250925092565b60008060008060008060a0878903121561240257600080fd5b863561240d81611d2a565b9550602087013561241d81611d2a565b94506040870135935060608701359250608087013567ffffffffffffffff81111561244757600080fd5b61245389828a01611d4c565b979a9699509497509295939492505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b60008083357fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe18436030181126124c957600080fd5b83018035915067ffffffffffffffff8211156124e457600080fd5b602001915036819003821315611d8e57600080fd5b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612551577f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b5060010190565b8183528181602085013750600060208284010152600060207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116840101905092915050565b88815287602082015273ffffffffffffffffffffffffffffffffffffffff8716604082015260c0606082015260006125dd60c083018789612558565b82810360808401526125f0818688612558565b905082810360a08401526126048185612265565b9b9a5050505050505050505050565b60006020828403121561262557600080fd5b815180151581146109cb57600080fd5b6000808585111561264557600080fd5b8386111561265257600080fd5b5050820193919092039150565b600080600080600080600080610100898b03121561267c57600080fd5b505086359860208801359850604088013597606081013597506080810135965060a0810135955060c0810135945060e0013592509050565b803560208310156106cb577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff602084900360031b1b1692915050565b600082612726577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500690565b8060005b600281101561129157815184526020938401939091019060010161272f565b610180810161275d828761272b565b60408083018660005b600281101561278d5761277a83835161272b565b9183019160209190910190600101612766565b5050505061279e60c083018561272b565b61010082018360005b60048110156127c65781518352602092830192909101906001016127a7565b50505095945050505050565b6000602082840312156127e457600080fd5b5051919050565b600082516127fd818460208701612241565b919091019291505056fe416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a26469706673582212202e2f869d053e99be2d9eedb6fd688d9d8d3089f69b7e794325a12428f97a55f364736f6c63430008110033"; 753 | 754 | type ZKPassAccountConstructorParams = 755 | | [signer?: Signer] 756 | | ConstructorParameters; 757 | 758 | const isSuperArgs = ( 759 | xs: ZKPassAccountConstructorParams 760 | ): xs is ConstructorParameters => xs.length > 1; 761 | 762 | export class ZKPassAccount__factory extends ContractFactory { 763 | constructor(...args: ZKPassAccountConstructorParams) { 764 | if (isSuperArgs(args)) { 765 | super(...args); 766 | } else { 767 | super(_abi, _bytecode, args[0]); 768 | } 769 | } 770 | 771 | override deploy( 772 | anEntryPoint: PromiseOrValue, 773 | aVerifier: PromiseOrValue, 774 | anEmailGuardian: PromiseOrValue, 775 | overrides?: Overrides & { from?: PromiseOrValue } 776 | ): Promise { 777 | return super.deploy( 778 | anEntryPoint, 779 | aVerifier, 780 | anEmailGuardian, 781 | overrides || {} 782 | ) as Promise; 783 | } 784 | override getDeployTransaction( 785 | anEntryPoint: PromiseOrValue, 786 | aVerifier: PromiseOrValue, 787 | anEmailGuardian: PromiseOrValue, 788 | overrides?: Overrides & { from?: PromiseOrValue } 789 | ): TransactionRequest { 790 | return super.getDeployTransaction( 791 | anEntryPoint, 792 | aVerifier, 793 | anEmailGuardian, 794 | overrides || {} 795 | ); 796 | } 797 | override attach(address: string): ZKPassAccount { 798 | return super.attach(address) as ZKPassAccount; 799 | } 800 | override connect(signer: Signer): ZKPassAccount__factory { 801 | return super.connect(signer) as ZKPassAccount__factory; 802 | } 803 | 804 | static readonly bytecode = _bytecode; 805 | static readonly abi = _abi; 806 | static createInterface(): ZKPassAccountInterface { 807 | return new utils.Interface(_abi) as ZKPassAccountInterface; 808 | } 809 | static connect( 810 | address: string, 811 | signerOrProvider: Signer | Provider 812 | ): ZKPassAccount { 813 | return new Contract(address, _abi, signerOrProvider) as ZKPassAccount; 814 | } 815 | } 816 | -------------------------------------------------------------------------------- /src/contracts/common.ts: -------------------------------------------------------------------------------- 1 | /* Autogenerated file. Do not edit manually. */ 2 | /* tslint:disable */ 3 | /* eslint-disable */ 4 | import type { Listener } from "@ethersproject/providers"; 5 | import type { Event, EventFilter } from "ethers"; 6 | 7 | export interface TypedEvent< 8 | TArgsArray extends Array = any, 9 | TArgsObject = any 10 | > extends Event { 11 | args: TArgsArray & TArgsObject; 12 | } 13 | 14 | export interface TypedEventFilter<_TEvent extends TypedEvent> 15 | extends EventFilter {} 16 | 17 | export interface TypedListener { 18 | (...listenerArg: [...__TypechainArgsArray, TEvent]): void; 19 | } 20 | 21 | type __TypechainArgsArray = T extends TypedEvent ? U : never; 22 | 23 | export interface OnEvent { 24 | ( 25 | eventFilter: TypedEventFilter, 26 | listener: TypedListener 27 | ): TRes; 28 | (eventName: string, listener: Listener): TRes; 29 | } 30 | 31 | export type MinEthersFactory = { 32 | deploy(...a: ARGS[]): Promise; 33 | }; 34 | 35 | export type GetContractTypeFromFactory = F extends MinEthersFactory< 36 | infer C, 37 | any 38 | > 39 | ? C 40 | : never; 41 | 42 | export type GetARGsTypeFromFactory = F extends MinEthersFactory 43 | ? Parameters 44 | : never; 45 | 46 | export type PromiseOrValue = T | Promise; 47 | -------------------------------------------------------------------------------- /src/contracts/index.ts: -------------------------------------------------------------------------------- 1 | export { ZKPassAccount__factory } from "./ZKPassAccount__factory" 2 | export type { ZKPassAccountFactory } from "./ZKPassAccountFactory" 3 | export { ZKPassAccountFactory__factory } from "./ZKPassAccountFactory__factory" 4 | export type { ZKPassAccount } from "./ZKPassAccount" 5 | -------------------------------------------------------------------------------- /src/main.tsx: -------------------------------------------------------------------------------- 1 | import React from "react"; 2 | import App from "./App"; 3 | import { createRoot } from "react-dom/client"; 4 | import "./styles/globals.css"; 5 | 6 | const container = document.getElementById("root"); 7 | const root = createRoot(container!); 8 | root.render( 9 | 10 | 11 | 12 | ); 13 | -------------------------------------------------------------------------------- /src/signer/index.ts: -------------------------------------------------------------------------------- 1 | import * as ethers from "ethers" 2 | import { defaultAbiCoder, hexConcat, hexlify, keccak256, namehash, toUtf8Bytes } from "ethers/lib/utils" 3 | import { BundlerJsonRpcProvider, IPresetBuilderOpts, Presets, UserOperationBuilder, UserOperationMiddlewareFn } from "userop" 4 | import { BigNumber } from "ethers" 5 | import { EntryPoint, EntryPoint__factory } from "@account-abstraction/contracts" 6 | import { 7 | ZKPassAccountFactory__factory, 8 | ZKPassAccount__factory, 9 | ZKPassAccount as ZKPassAccountImpl, 10 | ZKPassAccountFactory, 11 | } from "../contracts" 12 | 13 | // @ts-ignore 14 | const snarkjs = window.snarkjs 15 | 16 | export async function prove( 17 | nonce: BigInt, op: BigInt, secret: BigInt, 18 | wasm: string, zkey: string 19 | ) { 20 | return await snarkjs.groth16.fullProve({ 21 | nonce: nonce.toString(), 22 | op: op.toString(), 23 | secret: secret.toString() 24 | }, wasm, zkey); 25 | } 26 | 27 | export class ZKPSigner { 28 | private readonly SNARK_SCALAR_FIELD = BigInt("0x30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001") 29 | public name: string 30 | private passport: bigint 31 | private nonce?: bigint 32 | 33 | constructor(name:string, password: string, nonce?: number | BigNumber) { 34 | const nameHash = namehash(name + ".t2wallet.io") 35 | this.passport = BigInt(keccak256( 36 | hexConcat([nameHash, hexlify(toUtf8Bytes(password))]) 37 | )) 38 | if (nonce != null) { 39 | this.nonce = BigInt(nonce.toString()) 40 | } 41 | this.name = name 42 | } 43 | 44 | async initSignals(): Promise { 45 | const {publicSignals} = await prove( 46 | BigInt(0), // nonce 47 | BigInt(0), // opHash 48 | this.passport, 49 | "passport.wasm", 50 | "passport_0001.zkey" 51 | ) 52 | return publicSignals 53 | } 54 | 55 | public setNonce(nonce: bigint) { 56 | this.nonce = nonce 57 | } 58 | 59 | async sign(opHash: string): Promise { 60 | if (this.nonce == null) { 61 | throw new Error("nonce is null") 62 | } 63 | 64 | let op = BigInt(hexlify(opHash)) 65 | op %= this.SNARK_SCALAR_FIELD 66 | 67 | const passport = this.passport - this.nonce 68 | const {proof, publicSignals} = await prove( 69 | this.nonce, 70 | op, 71 | passport, 72 | "passport.wasm", 73 | "passport_0001.zkey" 74 | ) 75 | 76 | const signature = defaultAbiCoder.encode( 77 | ["uint256","uint256","uint256","uint256","uint256","uint256","uint256","uint256","uint256"], 78 | [proof.pi_a[0], proof.pi_a[1], proof.pi_b[0][1], proof.pi_b[0][0], proof.pi_b[1][1], proof.pi_b[1][0], proof.pi_c[0], proof.pi_c[1], publicSignals[1]] 79 | ) 80 | return signature 81 | } 82 | } 83 | 84 | export const ZKPassSignature = 85 | (signer: ZKPSigner): UserOperationMiddlewareFn => 86 | async (ctx) => { 87 | ctx.op.signature = await signer.sign(ctx.getUserOpHash()) 88 | } 89 | 90 | export class ZKPAccount extends UserOperationBuilder { 91 | private signer: ZKPSigner 92 | private provider: ethers.providers.JsonRpcProvider 93 | private entryPoint: EntryPoint 94 | private factory: ZKPassAccountFactory 95 | private initCode: string 96 | proxy: ZKPassAccountImpl 97 | 98 | private constructor(signer: ZKPSigner, rpcUrl: string, opts?: IPresetBuilderOpts) { 99 | super() 100 | this.signer = signer 101 | this.provider = new BundlerJsonRpcProvider(rpcUrl).setBundlerRpc(opts?.overrideBundlerRpc) 102 | this.entryPoint = EntryPoint__factory.connect( 103 | opts?.entryPoint || '0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789', 104 | this.provider 105 | ) 106 | this.factory = ZKPassAccountFactory__factory.connect( 107 | opts?.factory || '0x85B6E973EF283727A2c7E2D8D6C86AE8bcAb8029', 108 | this.provider 109 | ) 110 | this.initCode = "0x" 111 | this.proxy = ZKPassAccount__factory.connect(ethers.constants.AddressZero, this.provider) 112 | } 113 | 114 | private resolveAccount: UserOperationMiddlewareFn = async (ctx) => { 115 | ctx.op.nonce = await this.entryPoint.getNonce(ctx.op.sender, 0) 116 | ctx.op.initCode = ctx.op.nonce.eq(0) ? this.initCode : "0x" 117 | } 118 | 119 | public static async init( 120 | signer: ZKPSigner, 121 | rpcUrl: string, 122 | opts?: IPresetBuilderOpts 123 | ): Promise { 124 | const instance = new ZKPAccount(signer, rpcUrl, opts) 125 | 126 | try { 127 | instance.initCode = ethers.utils.hexConcat([ 128 | instance.factory.address, 129 | instance.factory.interface.encodeFunctionData("createAccount", [ 130 | signer.name, 131 | (await signer.initSignals())[0], 132 | ]), 133 | ]) 134 | await instance.entryPoint.callStatic.getSenderAddress(instance.initCode) 135 | 136 | throw new Error("getSenderAddress: unexpected result") 137 | } catch (error: any) { 138 | const addr = error?.errorArgs?.sender 139 | if (!addr) throw error 140 | 141 | instance.proxy = ZKPassAccount__factory.connect(addr, instance.provider) 142 | } 143 | 144 | const base = instance 145 | .useDefaults({ 146 | sender: instance.proxy.address, 147 | signature: await instance.signer.sign(ethers.utils.keccak256("0xdead")), 148 | }) 149 | .useMiddleware(instance.resolveAccount) 150 | .useMiddleware(Presets.Middleware.getGasPrice(instance.provider)) 151 | 152 | const withPM = opts?.paymasterMiddleware 153 | ? base.useMiddleware(opts.paymasterMiddleware) 154 | : base.useMiddleware(Presets.Middleware.estimateUserOperationGas(instance.provider)) 155 | 156 | return withPM.useMiddleware(ZKPassSignature(instance.signer)) 157 | } 158 | 159 | execute(to: string, value: ethers.BigNumberish, data: ethers.BytesLike) { 160 | return this.setCallData( 161 | this.proxy.interface.encodeFunctionData("execute", [to, value, data]) 162 | ) 163 | } 164 | 165 | executeBatch( 166 | to: Array, 167 | values: Array, 168 | data: Array 169 | ) { 170 | return this.setCallData( 171 | this.proxy.interface.encodeFunctionData("executeBatch", [to, data]) 172 | ) 173 | } 174 | } 175 | -------------------------------------------------------------------------------- /src/store/base.ts: -------------------------------------------------------------------------------- 1 | import { makeAutoObservable } from 'mobx' 2 | import { constants, ethers, providers } from "ethers" 3 | import { ZKPassAccount__factory } from "../contracts/ZKPassAccount__factory" 4 | import { ZKPassAccountFactory__factory } from "../contracts/ZKPassAccountFactory__factory" 5 | import { INSRegistry__factory } from "../contracts/INSRegistry__factory" 6 | import { EntryPoint__factory } from "@account-abstraction/contracts" 7 | import { addresses } from "../common/constants" 8 | import { ZKPWalletNFT__factory } from '../contracts/ZKPWalletNFT__factory' 9 | import { hexConcat, hexlify, keccak256, namehash, toUtf8Bytes, formatEther } from 'ethers/lib/utils' 10 | import { ZKPAccount, ZKPSigner, prove } from '../signer' 11 | import { PublicResolver__factory } from '../contracts/PublicResolver__factory' 12 | import { Client, Presets } from 'userop' 13 | 14 | const config = addresses["testnet"] 15 | 16 | export class BaseStore { 17 | username: String = '' 18 | password: String = '' 19 | email: String = '' 20 | code: String = '' 21 | 22 | info = { 23 | show: false, 24 | text: '' 25 | } 26 | 27 | isLogin = false 28 | showEmail = false 29 | showRecovery = false 30 | showRecoveryMessage = false 31 | minted = 0 32 | recoveryMessage = '' 33 | 34 | provider = new providers.JsonRpcProvider(config.endpoint) 35 | paymaster = new providers.JsonRpcProvider(config.paymaster) 36 | bundler = new providers.JsonRpcProvider(config.bundler) 37 | binder = new providers.JsonRpcProvider(config.binder); 38 | accountTpl = new ZKPassAccount__factory() 39 | factory = ZKPassAccountFactory__factory.connect(config.accountFactory, this.provider) 40 | registry = INSRegistry__factory.connect(config.registry, this.provider) 41 | entryPoint = EntryPoint__factory.connect(config.entryPoint, this.provider) 42 | nft = ZKPWalletNFT__factory.connect(config.nft, this.provider) 43 | disableButton = false 44 | client = null; 45 | 46 | account = { 47 | created: false, 48 | username: "", 49 | password: "", 50 | address: "", 51 | balance: "", 52 | nameHash: "", 53 | passHash: "", 54 | guarded: false, 55 | email: "", 56 | code: "", 57 | nft: 0, 58 | } 59 | 60 | constructor() { 61 | makeAutoObservable(this) 62 | } 63 | 64 | async login() { 65 | if (this.username.trim() === "") { 66 | this.info = { 67 | show: true, 68 | text: 'Account name is empty' 69 | } 70 | return 71 | } 72 | if (this.password.trim() === "") { 73 | this.info = { 74 | show: true, 75 | text: 'Password is empty' 76 | } 77 | return 78 | } 79 | this.disableButton = true 80 | this.account.username = this.username.trim() 81 | this.account.password = this.password.trim() 82 | 83 | const nameHash = namehash(this.account.username + ".t2wallet.io") 84 | const resovler = await this.registry.resolver(nameHash) 85 | 86 | this.info = { 87 | show: true, 88 | text: 'Generate password proof...' 89 | } 90 | const passport = BigInt(keccak256( 91 | hexConcat([nameHash, hexlify(toUtf8Bytes(this.account.password))]) 92 | )) 93 | const {publicSignals} = await prove( 94 | BigInt(0), // nonce 95 | BigInt(0), // opHash 96 | passport, 97 | "passport.wasm", 98 | "passport_0001.zkey" 99 | ) 100 | if (resovler === constants.AddressZero) { 101 | this.account.address = await this.factory.getAddress(this.account.username, publicSignals[0]) 102 | } else { 103 | const publicRessolver = PublicResolver__factory.connect(resovler, this.provider) 104 | this.account.address = await publicRessolver["addr(bytes32)"](nameHash) 105 | this.account.created = true 106 | 107 | const account = ZKPassAccount__factory.connect(this.account.address, this.provider) 108 | const passHash = await account.passHash() 109 | if (passHash.toString() !== publicSignals[0].toString()) { 110 | this.disableButton = false 111 | this.info = { 112 | show: true, 113 | text: 'Password incorrect' 114 | } 115 | this.showRecovery = true 116 | return 117 | } 118 | } 119 | this.account.nameHash = nameHash 120 | this.account.passHash = publicSignals[0] 121 | this.disableButton = false 122 | this.isLogin = true 123 | // @ts-ignore 124 | this.client = await Client.init(config.endpoint, { 125 | entryPoint: config.entryPoint, 126 | overrideBundlerRpc: config.bundler, 127 | }) 128 | this.info = { 129 | show: true, 130 | text: `Logined account ${this.account.username}.t2wallet.io` 131 | } 132 | 133 | try { 134 | // claim gas 135 | await this.paymaster.send('pm_requestGas', [this.account.address]) 136 | } catch (e) { 137 | } 138 | } 139 | 140 | async disconnect() { 141 | this.isLogin = false 142 | this.disableButton = false 143 | this.showRecovery = false 144 | this.account.nft = 0 145 | this.account.guarded = false 146 | this.account.created = false 147 | } 148 | 149 | async mint() { 150 | this.info = { 151 | show: true, 152 | text: 'Prepare user operation to mint NFT...' 153 | } 154 | this.disableButton = true 155 | 156 | // mint NFT 157 | const callData = this.accountTpl.interface.encodeFunctionData("execute", [ 158 | config.nft, 159 | 0, 160 | "0x1249c58b", 161 | ]) 162 | let nonce = 0 163 | if (this.account.created) { 164 | nonce = (await ZKPassAccount__factory.connect(this.account.address, this.provider).getNonce()).toNumber() 165 | } 166 | 167 | const signer = new ZKPSigner(this.account.username, this.account.password, nonce) 168 | const accountBuilder = await ZKPAccount.init(signer, config.endpoint, { 169 | overrideBundlerRpc: config.bundler, 170 | entryPoint: config.entryPoint, 171 | paymasterMiddleware: Presets.Middleware.verifyingPaymaster( 172 | config.paymaster, 173 | "" 174 | ), 175 | }) 176 | accountBuilder.setCallData(callData) 177 | 178 | this.info = { 179 | show: true, 180 | text: 'Send user operation to bundler...' 181 | } 182 | // @ts-ignore 183 | const response = await this.client.sendUserOperation(accountBuilder) 184 | if (this.account.created) { 185 | this.info = { 186 | show: true, 187 | text: `Mint NFT opHash: ${response.userOpHash}` 188 | } 189 | } else { 190 | this.info = { 191 | show: true, 192 | text: `Create account and mint NFT opHash: ${response.userOpHash}` 193 | } 194 | } 195 | const userOperationEvent = await response.wait() 196 | this.info = { 197 | show: true, 198 | text: `Mint NFT txhash: ${userOperationEvent?.transactionHash}` 199 | } 200 | this.account.created = true 201 | this.disableButton = false 202 | } 203 | 204 | async fetchMintedNFT() { 205 | this.minted = (await this.nft.nextTokenId()).toNumber() 206 | } 207 | 208 | async openEmailGuardian() { 209 | this.showEmail = true 210 | } 211 | 212 | async fillAccount() { 213 | const balance = await this.provider.getBalance(this.account.address) 214 | this.account.balance = formatEther(balance) 215 | 216 | const amount = await this.nft.balanceOf(this.account.address) 217 | this.account.nft = amount.toNumber() 218 | 219 | try { 220 | const email = await ZKPassAccount__factory.connect(this.account.address, this.provider).email() 221 | if (email !== "0x" + "0".repeat(64)) { 222 | this.account.guarded = true 223 | this.account.email = email 224 | } 225 | } catch (err) { 226 | this.account.guarded = false 227 | } 228 | } 229 | 230 | async sendCode() { 231 | if (this.email.trim() === "") { 232 | this.info = { 233 | show: true, 234 | text: 'Email is empty' 235 | } 236 | return 237 | } 238 | 239 | await this.binder.send("send_code", [this.account.address, this.email.trim()]) 240 | this.info = { 241 | show: true, 242 | text: `Verify code already send to [${this.email.trim()}]` 243 | } 244 | } 245 | 246 | async addEmailGuardian() { 247 | if (this.email.trim() === "") { 248 | this.info = { 249 | show: true, 250 | text: 'Email is empty' 251 | } 252 | return 253 | } 254 | if (this.code.trim() === "") { 255 | this.info = { 256 | show: true, 257 | text: 'Verfy code is empty' 258 | } 259 | return 260 | } 261 | let signature = ""; 262 | try { 263 | signature = await this.binder.send("verify_code", [ 264 | this.account.address, 265 | this.email.trim(), 266 | this.code.trim() 267 | ]) 268 | } catch (err) { 269 | this.info = { 270 | show: true, 271 | // @ts-ignore 272 | text: `verify code error: ${err!.error!.message}` 273 | } 274 | return 275 | } 276 | 277 | const emailHash = keccak256(toUtf8Bytes(this.email.trim())) 278 | 279 | this.info = { 280 | show: true, 281 | text: 'Prepare user operation to add email guardian...' 282 | } 283 | this.disableButton = true 284 | 285 | console.log(signature); 286 | 287 | const callParams = ethers.utils.defaultAbiCoder.encode( 288 | ["bytes32", "bytes"], 289 | [emailHash, signature] 290 | ) 291 | const callData = this.accountTpl.interface.encodeFunctionData("execute", [ 292 | this.account.address, 293 | 0, 294 | `0x7c5b84e7${callParams.substring(2)}`, 295 | ]) 296 | let nonce = 0 297 | if (this.account.created) { 298 | nonce = (await ZKPassAccount__factory.connect(this.account.address, this.provider).getNonce()).toNumber() 299 | } 300 | const signer = new ZKPSigner(this.account.username, this.account.password, nonce) 301 | const accountBuilder = await ZKPAccount.init(signer, config.endpoint, { 302 | overrideBundlerRpc: config.bundler, 303 | entryPoint: config.entryPoint, 304 | paymasterMiddleware: Presets.Middleware.verifyingPaymaster( 305 | config.paymaster, 306 | "" 307 | ), 308 | }) 309 | accountBuilder.setCallData(callData) 310 | 311 | this.info = { 312 | show: true, 313 | text: 'Send user operation to bundler...' 314 | } 315 | // @ts-ignore 316 | const response = await this.client.sendUserOperation(accountBuilder) 317 | 318 | this.info = { 319 | show: true, 320 | text: `Add email guardian opHash: ${response.userOpHash}` 321 | } 322 | const userOperationEvent = await response.wait() 323 | this.info = { 324 | show: true, 325 | text: `Add email guardian txhash: ${userOperationEvent?.transactionHash}` 326 | } 327 | this.disableButton = false 328 | this.showEmail = false 329 | } 330 | 331 | async generateRecovery() { 332 | this.info = { 333 | show: true, 334 | text: 'Generate email recovery message...' 335 | } 336 | 337 | const username = this.username.trim() 338 | const password = this.password.trim() 339 | if (username === "") { 340 | this.info = { 341 | show: true, 342 | text: 'Account name is empty' 343 | } 344 | return 345 | } 346 | if (password === "") { 347 | this.info = { 348 | show: true, 349 | text: 'Password is empty' 350 | } 351 | return 352 | } 353 | const nameHash = namehash(username + ".t2wallet.io") 354 | const resovler = await this.registry.resolver(nameHash) 355 | if (resovler === constants.AddressZero) { 356 | this.info = { 357 | show: true, 358 | text: `Account ${username}.t2wallet.io haven't create` 359 | } 360 | return 361 | } 362 | const publicRessolver = PublicResolver__factory.connect(resovler, this.provider) 363 | const address = await publicRessolver["addr(bytes32)"](nameHash) 364 | 365 | const email = await ZKPassAccount__factory.connect(address, this.provider).email() 366 | if (email === "0x" + "0".repeat(64)) { 367 | this.recoveryMessage = `Account ${username}.t2wallet.io haven't add email guardian.` 368 | this.showRecoveryMessage = true 369 | return 370 | } 371 | 372 | this.info = { 373 | show: true, 374 | text: 'Generate password proof...' 375 | } 376 | const passport = BigInt(keccak256( 377 | hexConcat([nameHash, hexlify(toUtf8Bytes(password))]) 378 | )) 379 | const {publicSignals} = await prove( 380 | BigInt(0), // nonce 381 | BigInt(0), // opHash 382 | passport, 383 | "passport.wasm", 384 | "passport_0001.zkey" 385 | ) 386 | const chainId = (await this.provider.getNetwork()).chainId 387 | const passHash = hexlify(BigInt(publicSignals[0])) 388 | 389 | this.recoveryMessage = `Send an email with below text as subject to iopay-recover@iotex.me\n01${chainId}${address.toLowerCase()}${passHash.substring(2)}` 390 | this.showRecoveryMessage = true 391 | } 392 | 393 | async closeRecoveryMessage() { 394 | this.showRecoveryMessage = false 395 | } 396 | } 397 | -------------------------------------------------------------------------------- /src/store/index.ts: -------------------------------------------------------------------------------- 1 | import { RootStore } from './root'; 2 | import React from 'react'; 3 | import { Buffer } from 'buffer'; 4 | (globalThis as any).Buffer = Buffer; 5 | 6 | export const rootStore = new RootStore(); 7 | 8 | const StoresContext = React.createContext(rootStore); 9 | 10 | export const useStore = () => React.useContext(StoresContext); 11 | 12 | //@ts-ignore 13 | window._store = rootStore; 14 | -------------------------------------------------------------------------------- /src/store/root.ts: -------------------------------------------------------------------------------- 1 | import {BaseStore} from "./base"; 2 | 3 | export class RootStore { 4 | base = new BaseStore(); 5 | } 6 | -------------------------------------------------------------------------------- /src/styles/globals.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | 5 | @layer base { 6 | html { 7 | -webkit-tap-highlight-color: transparent; 8 | height: -webkit-fill-available; 9 | } 10 | 11 | body { 12 | height: -webkit-fill-available; 13 | } 14 | 15 | /* If using React, set height on the root div as well */ 16 | #root { 17 | height: -webkit-fill-available; 18 | } 19 | } 20 | 21 | @layer utilities { 22 | .pb-safe { 23 | padding-bottom: env(safe-area-inset-bottom); 24 | } 25 | } 26 | 27 | html, 28 | body { 29 | padding: 0; 30 | margin: 0; 31 | font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, 32 | Ubuntu, Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif; 33 | } 34 | 35 | h1, h2, h3, h4, h5, h6 { 36 | margin-bottom: 0.3rem; 37 | margin-top: 1rem; 38 | } 39 | a { 40 | color: #7dd3fc; 41 | text-decoration: none; 42 | } 43 | 44 | * { 45 | box-sizing: border-box; 46 | } 47 | 48 | body { 49 | @apply min-h-screen-safe text-white; 50 | } 51 | -------------------------------------------------------------------------------- /tailwind.config.js: -------------------------------------------------------------------------------- 1 | /** @type {import('tailwindcss').Config} */ 2 | module.exports = { 3 | content: [ 4 | "./index.html", 5 | "./src/**/*.{js,ts,jsx,tsx}", 6 | ], 7 | theme: { 8 | extend: {}, 9 | }, 10 | plugins: [ 11 | require('tailwindcss-safe-area') 12 | ], 13 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": true, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "react-jsx" 18 | }, 19 | "include": ["src"], 20 | "references": [{ "path": "./tsconfig.node.json" }] 21 | } 22 | -------------------------------------------------------------------------------- /tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import react from '@vitejs/plugin-react'; 2 | import { defineConfig } from 'vite'; 3 | import { nodePolyfills } from 'vite-plugin-node-polyfills'; 4 | 5 | export default defineConfig({ 6 | plugins: [ 7 | react(), 8 | nodePolyfills({ 9 | global: true, 10 | }), 11 | ], 12 | optimizeDeps: { 13 | esbuildOptions: { 14 | target: "esnext", 15 | define: { 16 | global: 'globalThis' 17 | }, 18 | supported: { 19 | bigint: true 20 | }, 21 | } 22 | }, 23 | define: { 24 | 'process.env': {}, 25 | }, 26 | base: './', 27 | }); 28 | --------------------------------------------------------------------------------