forked from OpenZeppelin/contracts-wizard
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi.ts
More file actions
69 lines (64 loc) · 2.99 KB
/
api.ts
File metadata and controls
69 lines (64 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import type { CommonOptions } from './common-options';
import { printERC20, defaults as erc20defaults, isAccessControlRequired as erc20IsAccessControlRequired, ERC20Options } from './erc20';
import { printERC721, defaults as erc721defaults, isAccessControlRequired as erc721IsAccessControlRequired, ERC721Options } from './erc721';
import { printERC1155, defaults as erc1155defaults, isAccessControlRequired as erc1155IsAccessControlRequired, ERC1155Options } from './erc1155';
import { printStablecoin, defaults as stablecoinDefaults, isAccessControlRequired as stablecoinIsAccessControlRequired, StablecoinOptions } from './stablecoin';
import { printGovernor, defaults as governorDefaults, isAccessControlRequired as governorIsAccessControlRequired, GovernorOptions } from './governor';
import { printCustom, defaults as customDefaults, isAccessControlRequired as customIsAccessControlRequired, CustomOptions } from './custom';
export interface WizardContractAPI<Options extends CommonOptions> {
/**
* Returns a string representation of a contract generated using the provided options. If opts is not provided, uses `defaults`.
*/
print: (opts?: Options) => string,
/**
* The default options that are used for `print`.
*/
defaults: Required<Options>;
/**
* Whether any of the provided options require access control to be enabled. If this returns `true`, then calling `print` with the
* same options would cause the `access` option to default to `'ownable'` if it was `undefined` or `false`.
*/
isAccessControlRequired: (opts: Partial<Options>) => boolean,
}
export type ERC20 = WizardContractAPI<ERC20Options>;
export type ERC721 = WizardContractAPI<ERC721Options>;
export type ERC1155 = WizardContractAPI<ERC1155Options>;
export type Stablecoin = WizardContractAPI<StablecoinOptions>;
export type RealWorldAsset = WizardContractAPI<StablecoinOptions>;
export type Governor = WizardContractAPI<GovernorOptions>;
export type Custom = WizardContractAPI<CustomOptions>;
export const erc20: ERC20 = {
print: printERC20,
defaults: erc20defaults,
isAccessControlRequired: erc20IsAccessControlRequired
}
export const erc721: ERC721 = {
print: printERC721,
defaults: erc721defaults,
isAccessControlRequired: erc721IsAccessControlRequired
}
export const erc1155: ERC1155 = {
print: printERC1155,
defaults: erc1155defaults,
isAccessControlRequired: erc1155IsAccessControlRequired
}
export const stablecoin: Stablecoin = {
print: printStablecoin,
defaults: stablecoinDefaults,
isAccessControlRequired: stablecoinIsAccessControlRequired
}
export const realWorldAsset: RealWorldAsset = {
print: printStablecoin,
defaults: stablecoinDefaults,
isAccessControlRequired: stablecoinIsAccessControlRequired
}
export const governor: Governor = {
print: printGovernor,
defaults: governorDefaults,
isAccessControlRequired: governorIsAccessControlRequired
}
export const custom: Custom = {
print: printCustom,
defaults: customDefaults,
isAccessControlRequired: customIsAccessControlRequired
}