@openzeppelin/wizard-stellar 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/LICENSE +661 -0
  2. package/NOTICE +8 -0
  3. package/README.md +57 -0
  4. package/dist/add-pausable.d.ts +4 -0
  5. package/dist/add-pausable.d.ts.map +1 -0
  6. package/dist/add-pausable.js +37 -0
  7. package/dist/add-pausable.js.map +1 -0
  8. package/dist/api.d.ts +22 -0
  9. package/dist/api.d.ts.map +1 -0
  10. package/dist/api.js +9 -0
  11. package/dist/api.js.map +1 -0
  12. package/dist/build-generic.d.ts +9 -0
  13. package/dist/build-generic.d.ts.map +1 -0
  14. package/dist/build-generic.js +15 -0
  15. package/dist/build-generic.js.map +1 -0
  16. package/dist/common-options.d.ts +15 -0
  17. package/dist/common-options.d.ts.map +1 -0
  18. package/dist/common-options.js +31 -0
  19. package/dist/common-options.js.map +1 -0
  20. package/dist/contract.d.ts +91 -0
  21. package/dist/contract.d.ts.map +1 -0
  22. package/dist/contract.js +123 -0
  23. package/dist/contract.js.map +1 -0
  24. package/dist/error.d.ts +8 -0
  25. package/dist/error.d.ts.map +1 -0
  26. package/dist/error.js +11 -0
  27. package/dist/error.js.map +1 -0
  28. package/dist/fungible.d.ts +24 -0
  29. package/dist/fungible.d.ts.map +1 -0
  30. package/dist/fungible.js +264 -0
  31. package/dist/fungible.js.map +1 -0
  32. package/dist/generate/alternatives.d.ts +7 -0
  33. package/dist/generate/alternatives.d.ts.map +1 -0
  34. package/dist/generate/alternatives.js +27 -0
  35. package/dist/generate/alternatives.js.map +1 -0
  36. package/dist/generate/fungible.d.ts +3 -0
  37. package/dist/generate/fungible.d.ts.map +1 -0
  38. package/dist/generate/fungible.js +21 -0
  39. package/dist/generate/fungible.js.map +1 -0
  40. package/dist/generate/sources.d.ts +16 -0
  41. package/dist/generate/sources.d.ts.map +1 -0
  42. package/dist/generate/sources.js +62 -0
  43. package/dist/generate/sources.js.map +1 -0
  44. package/dist/index.d.ts +16 -0
  45. package/dist/index.d.ts.map +1 -0
  46. package/dist/index.js +24 -0
  47. package/dist/index.js.map +1 -0
  48. package/dist/kind.d.ts +4 -0
  49. package/dist/kind.d.ts.map +1 -0
  50. package/dist/kind.js +24 -0
  51. package/dist/kind.js.map +1 -0
  52. package/dist/print.d.ts +3 -0
  53. package/dist/print.d.ts.map +1 -0
  54. package/dist/print.js +257 -0
  55. package/dist/print.js.map +1 -0
  56. package/dist/set-access-control.d.ts +15 -0
  57. package/dist/set-access-control.d.ts.map +1 -0
  58. package/dist/set-access-control.js +67 -0
  59. package/dist/set-access-control.js.map +1 -0
  60. package/dist/set-info.d.ts +10 -0
  61. package/dist/set-info.d.ts.map +1 -0
  62. package/dist/set-info.js +13 -0
  63. package/dist/set-info.js.map +1 -0
  64. package/dist/test.d.ts +2 -0
  65. package/dist/test.d.ts.map +1 -0
  66. package/dist/test.js +21 -0
  67. package/dist/test.js.map +1 -0
  68. package/dist/utils/convert-strings.d.ts +27 -0
  69. package/dist/utils/convert-strings.d.ts.map +1 -0
  70. package/dist/utils/convert-strings.js +81 -0
  71. package/dist/utils/convert-strings.js.map +1 -0
  72. package/dist/utils/define-functions.d.ts +5 -0
  73. package/dist/utils/define-functions.d.ts.map +1 -0
  74. package/dist/utils/define-functions.js +7 -0
  75. package/dist/utils/define-functions.js.map +1 -0
  76. package/dist/utils/format-lines.d.ts +6 -0
  77. package/dist/utils/format-lines.d.ts.map +1 -0
  78. package/dist/utils/format-lines.js +28 -0
  79. package/dist/utils/format-lines.js.map +1 -0
  80. package/dist/utils/sorted-by.d.ts +2 -0
  81. package/dist/utils/sorted-by.d.ts.map +1 -0
  82. package/dist/utils/sorted-by.js +7 -0
  83. package/dist/utils/sorted-by.js.map +1 -0
  84. package/dist/utils/version.d.ts +10 -0
  85. package/dist/utils/version.d.ts.map +1 -0
  86. package/dist/utils/version.js +13 -0
  87. package/dist/utils/version.js.map +1 -0
  88. package/package.json +33 -0
  89. package/src/add-pausable.ts +40 -0
  90. package/src/api.ts +30 -0
  91. package/src/build-generic.ts +19 -0
  92. package/src/common-options.ts +38 -0
  93. package/src/contract.ts +201 -0
  94. package/src/error.ts +7 -0
  95. package/src/fungible.ts +300 -0
  96. package/src/generate/alternatives.ts +32 -0
  97. package/src/generate/fungible.ts +21 -0
  98. package/src/generate/sources.ts +75 -0
  99. package/src/index.ts +24 -0
  100. package/src/kind.ts +26 -0
  101. package/src/print.ts +305 -0
  102. package/src/set-access-control.ts +73 -0
  103. package/src/set-info.ts +17 -0
  104. package/src/test.ts +26 -0
  105. package/src/utils/convert-strings.ts +83 -0
  106. package/src/utils/define-functions.ts +9 -0
  107. package/src/utils/format-lines.ts +26 -0
  108. package/src/utils/sorted-by.ts +3 -0
  109. package/src/utils/version.ts +10 -0
package/README.md ADDED
@@ -0,0 +1,57 @@
1
+ # OpenZeppelin Contracts Wizard for Stellar
2
+
3
+ Interactively build a contract out of components from OpenZeppelin Stellar Soroban Contracts. Provide parameters and desired features for the kind of contract that you want, and the Wizard will generate all of the code necessary. The resulting code is ready to be compiled and deployed, or it can serve as a starting point and customized further with application specific logic.
4
+
5
+ This package provides a programmatic API. For a web interface, see https://wizard.openzeppelin.com/stellar
6
+
7
+ ### Installation
8
+
9
+ `npm install @openzeppelin/wizard-stellar`
10
+
11
+ ### Contract types
12
+
13
+ The following contract types are supported:
14
+ - `fungible`
15
+
16
+ Each contract type has functions/constants as defined below.
17
+
18
+ ### Functions
19
+
20
+ #### `print`
21
+ ```js
22
+ function print(opts?: FungibleOptions): string
23
+ ```
24
+ Returns a string representation of a contract generated using the provided options. If `opts` is not provided, uses [`defaults`](#defaults).
25
+
26
+ #### `defaults`
27
+ ```js
28
+ const defaults: Required<FungibleOptions>
29
+ ```
30
+ The default options that are used for [`print`](#print).
31
+
32
+ ### Examples
33
+
34
+ Import the contract type(s) (for example, `fungible`) that you want to use from the `@openzeppelin/wizard-stellar` package:
35
+
36
+ ```js
37
+ import { fungible } from '@openzeppelin/wizard-stellar';
38
+ ```
39
+
40
+ To generate the source code for an Fungible contract with all of the default settings:
41
+ ```js
42
+ const contract = fungible.print();
43
+ ```
44
+
45
+ To generate the source code for an Fungible contract with some custom settings:
46
+ ```js
47
+ const contract = fungible.print({
48
+ pausable: true,
49
+ });
50
+ ```
51
+ or
52
+ ```js
53
+ const contract = fungible.print({
54
+ ...fungible.defaults,
55
+ pausable: true,
56
+ });
57
+ ```
@@ -0,0 +1,4 @@
1
+ import type { ContractBuilder } from './contract';
2
+ import type { Access } from './set-access-control';
3
+ export declare function addPausable(c: ContractBuilder, access: Access): void;
4
+ //# sourceMappingURL=add-pausable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-pausable.d.ts","sourceRoot":"","sources":["../src/add-pausable.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAInD,wBAAgB,WAAW,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,QAiB7D"}
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addPausable = addPausable;
4
+ const common_options_1 = require("./common-options");
5
+ const set_access_control_1 = require("./set-access-control");
6
+ const define_functions_1 = require("./utils/define-functions");
7
+ function addPausable(c, access) {
8
+ c.addUseClause('openzeppelin_pausable', 'self', { alias: 'pausable' });
9
+ c.addUseClause('openzeppelin_pausable', 'Pausable');
10
+ const pausableTrait = {
11
+ name: 'Pausable',
12
+ for: c.name,
13
+ tags: ['contractimpl'],
14
+ section: 'Utils',
15
+ };
16
+ c.addFunction(pausableTrait, functions.paused);
17
+ c.addFunction(pausableTrait, functions.pause);
18
+ c.addFunction(pausableTrait, functions.unpause);
19
+ (0, set_access_control_1.requireAccessControl)(c, pausableTrait, functions.pause, access, 'caller');
20
+ (0, set_access_control_1.requireAccessControl)(c, pausableTrait, functions.unpause, access, 'caller');
21
+ }
22
+ const functions = (0, define_functions_1.defineFunctions)({
23
+ paused: {
24
+ args: [(0, common_options_1.getSelfArg)()],
25
+ returns: 'bool',
26
+ code: ['pausable::paused(e)'],
27
+ },
28
+ pause: {
29
+ args: [(0, common_options_1.getSelfArg)(), { name: 'caller', type: 'Address' }],
30
+ code: ['pausable::pause(e, &caller)'],
31
+ },
32
+ unpause: {
33
+ args: [(0, common_options_1.getSelfArg)(), { name: 'caller', type: 'Address' }],
34
+ code: ['pausable::unpause(e, &caller)'],
35
+ },
36
+ });
37
+ //# sourceMappingURL=add-pausable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add-pausable.js","sourceRoot":"","sources":["../src/add-pausable.ts"],"names":[],"mappings":";;AAMA,kCAiBC;AAvBD,qDAA8C;AAG9C,6DAA4D;AAC5D,+DAA2D;AAE3D,SAAgB,WAAW,CAAC,CAAkB,EAAE,MAAc;IAC5D,CAAC,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;IACvE,CAAC,CAAC,YAAY,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;IAEpD,MAAM,aAAa,GAAG;QACpB,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,CAAC,CAAC,IAAI;QACX,IAAI,EAAE,CAAC,cAAc,CAAC;QACtB,OAAO,EAAE,OAAO;KACjB,CAAC;IAEF,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC,CAAC,WAAW,CAAC,aAAa,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAEhD,IAAA,yCAAoB,EAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC1E,IAAA,yCAAoB,EAAC,CAAC,EAAE,aAAa,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,kCAAe,EAAC;IAChC,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,qBAAqB,CAAC;KAC9B;IACD,KAAK,EAAE;QACL,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzD,IAAI,EAAE,CAAC,6BAA6B,CAAC;KACtC;IACD,OAAO,EAAE;QACP,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACzD,IAAI,EAAE,CAAC,+BAA+B,CAAC;KACxC;CACF,CAAC,CAAC"}
package/dist/api.d.ts ADDED
@@ -0,0 +1,22 @@
1
+ import type { CommonContractOptions } from './common-options';
2
+ import type { FungibleOptions } from './fungible';
3
+ export interface WizardContractAPI<Options extends CommonContractOptions> {
4
+ /**
5
+ * Returns a string representation of a contract generated using the provided options. If opts is not provided, uses `defaults`.
6
+ */
7
+ print: (opts?: Options) => string;
8
+ /**
9
+ * The default options that are used for `print`.
10
+ */
11
+ defaults: Required<Options>;
12
+ }
13
+ export interface AccessControlAPI<Options extends CommonContractOptions> {
14
+ /**
15
+ * Whether any of the provided options require access control to be enabled. If this returns `true`, then calling `print` with the
16
+ * same options would cause the `access` option to default to `'ownable'` if it was `undefined` or `false`.
17
+ */
18
+ isAccessControlRequired: (opts: Partial<Options>) => boolean;
19
+ }
20
+ export type Fungible = WizardContractAPI<FungibleOptions>;
21
+ export declare const fungible: Fungible;
22
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,iBAAiB,CAAC,OAAO,SAAS,qBAAqB;IACtE;;OAEG;IACH,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,MAAM,CAAC;IAElC;;OAEG;IACH,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB,CAAC,OAAO,SAAS,qBAAqB;IACrE;;;OAGG;IACH,uBAAuB,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,OAAO,CAAC;CAC9D;AAED,MAAM,MAAM,QAAQ,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;AAE1D,eAAO,MAAM,QAAQ,EAAE,QAGtB,CAAC"}
package/dist/api.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fungible = void 0;
4
+ const fungible_1 = require("./fungible");
5
+ exports.fungible = {
6
+ print: fungible_1.printFungible,
7
+ defaults: fungible_1.defaults,
8
+ };
9
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":";;;AAEA,yCAAyE;AAwB5D,QAAA,QAAQ,GAAa;IAChC,KAAK,EAAE,wBAAa;IACpB,QAAQ,EAAE,mBAAgB;CAC3B,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { FungibleOptions } from './fungible';
2
+ export interface KindedOptions {
3
+ Fungible: {
4
+ kind: 'Fungible';
5
+ } & FungibleOptions;
6
+ }
7
+ export type GenericOptions = KindedOptions[keyof KindedOptions];
8
+ export declare function buildGeneric(opts: GenericOptions): import("./contract").Contract;
9
+ //# sourceMappingURL=build-generic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-generic.d.ts","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,GAAG,eAAe,CAAC;CAClD;AAED,MAAM,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,aAAa,CAAC,CAAC;AAEhE,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,iCAShD"}
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildGeneric = buildGeneric;
4
+ const fungible_1 = require("./fungible");
5
+ function buildGeneric(opts) {
6
+ switch (opts.kind) {
7
+ case 'Fungible':
8
+ return (0, fungible_1.buildFungible)(opts);
9
+ default: {
10
+ const _ = opts.kind; // TODO: When there are additional kinds above, change this assignment to just `opts` instead of `opts.kind`
11
+ throw new Error('Unknown ERC');
12
+ }
13
+ }
14
+ }
15
+ //# sourceMappingURL=build-generic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-generic.js","sourceRoot":"","sources":["../src/build-generic.ts"],"names":[],"mappings":";;AASA,oCASC;AAjBD,yCAA2C;AAQ3C,SAAgB,YAAY,CAAC,IAAoB;IAC/C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,UAAU;YACb,OAAO,IAAA,wBAAa,EAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,IAAI,CAAC,IAAI,CAAC,CAAC,4GAA4G;YACxI,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { Argument } from './contract';
2
+ import type { Access } from './set-access-control';
3
+ import type { Info } from './set-info';
4
+ export declare const defaults: Required<CommonOptions>;
5
+ export declare const contractDefaults: Required<CommonContractOptions>;
6
+ export interface CommonOptions {
7
+ info?: Info;
8
+ }
9
+ export interface CommonContractOptions extends CommonOptions {
10
+ access?: Access;
11
+ }
12
+ export declare function withCommonDefaults(opts: CommonOptions): Required<CommonOptions>;
13
+ export declare function withCommonContractDefaults(opts: CommonContractOptions): Required<CommonContractOptions>;
14
+ export declare function getSelfArg(): Argument;
15
+ //# sourceMappingURL=common-options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-options.d.ts","sourceRoot":"","sources":["../src/common-options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC3C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAGvC,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,aAAa,CAEnC,CAAC;AAEX,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,qBAAqB,CAGnD,CAAC;AAEX,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAC;CACb;AAED,MAAM,WAAW,qBAAsB,SAAQ,aAAa;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,CAI/E;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,CAAC,CAKvG;AAED,wBAAgB,UAAU,IAAI,QAAQ,CAErC"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.contractDefaults = exports.defaults = void 0;
4
+ exports.withCommonDefaults = withCommonDefaults;
5
+ exports.withCommonContractDefaults = withCommonContractDefaults;
6
+ exports.getSelfArg = getSelfArg;
7
+ const set_info_1 = require("./set-info");
8
+ exports.defaults = {
9
+ info: set_info_1.defaults,
10
+ };
11
+ exports.contractDefaults = {
12
+ ...exports.defaults,
13
+ access: false,
14
+ };
15
+ function withCommonDefaults(opts) {
16
+ var _a;
17
+ return {
18
+ info: (_a = opts.info) !== null && _a !== void 0 ? _a : exports.defaults.info,
19
+ };
20
+ }
21
+ function withCommonContractDefaults(opts) {
22
+ var _a;
23
+ return {
24
+ ...withCommonDefaults(opts),
25
+ access: (_a = opts.access) !== null && _a !== void 0 ? _a : exports.contractDefaults.access,
26
+ };
27
+ }
28
+ function getSelfArg() {
29
+ return { name: 'e', type: '&Env' };
30
+ }
31
+ //# sourceMappingURL=common-options.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"common-options.js","sourceRoot":"","sources":["../src/common-options.ts"],"names":[],"mappings":";;;AAsBA,gDAIC;AAED,gEAKC;AAED,gCAEC;AAlCD,yCAAsD;AAEzC,QAAA,QAAQ,GAA4B;IAC/C,IAAI,EAAE,mBAAY;CACV,CAAC;AAEE,QAAA,gBAAgB,GAAoC;IAC/D,GAAG,gBAAQ;IACX,MAAM,EAAE,KAAK;CACL,CAAC;AAUX,SAAgB,kBAAkB,CAAC,IAAmB;;IACpD,OAAO;QACL,IAAI,EAAE,MAAA,IAAI,CAAC,IAAI,mCAAI,gBAAQ,CAAC,IAAI;KACjC,CAAC;AACJ,CAAC;AAED,SAAgB,0BAA0B,CAAC,IAA2B;;IACpE,OAAO;QACL,GAAG,kBAAkB,CAAC,IAAI,CAAC;QAC3B,MAAM,EAAE,MAAA,IAAI,CAAC,MAAM,mCAAI,wBAAgB,CAAC,MAAM;KAC/C,CAAC;AACJ,CAAC;AAED,SAAgB,UAAU;IACxB,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;AACrC,CAAC"}
@@ -0,0 +1,91 @@
1
+ export interface Contract {
2
+ license: string;
3
+ name: string;
4
+ useClauses: UseClause[];
5
+ constructorCode: string[];
6
+ constructorArgs: Argument[];
7
+ implementedTraits: ImplementedTrait[];
8
+ variables: Variable[];
9
+ errors: Error[];
10
+ ownable: boolean;
11
+ }
12
+ export interface Error {
13
+ name: string;
14
+ num: number;
15
+ }
16
+ export type Value = string | number | bigint | {
17
+ lit: string;
18
+ } | {
19
+ note: string;
20
+ value: Value;
21
+ };
22
+ export interface UseClause {
23
+ containerPath: string;
24
+ name: string;
25
+ groupable?: boolean;
26
+ alias?: string;
27
+ }
28
+ export interface BaseImplementedTrait {
29
+ name: string;
30
+ for: string;
31
+ tags: string[];
32
+ section?: string;
33
+ /**
34
+ * Priority for which trait to print first.
35
+ * Lower numbers are higher priority, undefined is lowest priority.
36
+ */
37
+ priority?: number;
38
+ }
39
+ export interface ImplementedTrait extends BaseImplementedTrait {
40
+ functions: ContractFunction[];
41
+ section?: string;
42
+ }
43
+ export interface BaseFunction {
44
+ name: string;
45
+ args: Argument[];
46
+ code: string[];
47
+ returns?: string;
48
+ }
49
+ export interface ContractFunction extends BaseFunction {
50
+ codeBefore?: string[];
51
+ tag?: string;
52
+ }
53
+ export interface Variable {
54
+ name: string;
55
+ type: string;
56
+ value: string;
57
+ }
58
+ export interface Argument {
59
+ name: string;
60
+ type?: string;
61
+ }
62
+ export declare class ContractBuilder implements Contract {
63
+ readonly name: string;
64
+ license: string;
65
+ ownable: boolean;
66
+ readonly constructorArgs: Argument[];
67
+ readonly constructorCode: string[];
68
+ private implementedTraitsMap;
69
+ private variablesMap;
70
+ private useClausesMap;
71
+ private errorsMap;
72
+ constructor(name: string);
73
+ get implementedTraits(): ImplementedTrait[];
74
+ get variables(): Variable[];
75
+ get useClauses(): UseClause[];
76
+ get errors(): Error[];
77
+ addError(name: string, num: number): boolean;
78
+ addUseClause(containerPath: string, name: string, options?: {
79
+ groupable?: boolean;
80
+ alias?: string;
81
+ }): void;
82
+ addVariable(variable: Variable): boolean;
83
+ addImplementedTrait(baseTrait: BaseImplementedTrait): ImplementedTrait;
84
+ addFunction(baseTrait: BaseImplementedTrait, fn: BaseFunction): ContractFunction;
85
+ private getFunctionSignature;
86
+ addFunctionCodeBefore(baseTrait: BaseImplementedTrait, fn: BaseFunction, codeBefore: string[]): void;
87
+ addFunctionTag(baseTrait: BaseImplementedTrait, fn: BaseFunction, tag: string): void;
88
+ addConstructorArgument(arg: Argument): void;
89
+ addConstructorCode(code: string): void;
90
+ }
91
+ //# sourceMappingURL=contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ContractBuilder = void 0;
4
+ const convert_strings_1 = require("./utils/convert-strings");
5
+ class ContractBuilder {
6
+ constructor(name) {
7
+ this.license = 'MIT';
8
+ this.ownable = false;
9
+ this.constructorArgs = [];
10
+ this.constructorCode = [];
11
+ this.implementedTraitsMap = new Map();
12
+ this.variablesMap = new Map();
13
+ this.useClausesMap = new Map();
14
+ this.errorsMap = new Map();
15
+ this.name = (0, convert_strings_1.toIdentifier)(name, true);
16
+ }
17
+ get implementedTraits() {
18
+ return [...this.implementedTraitsMap.values()];
19
+ }
20
+ get variables() {
21
+ return [...this.variablesMap.values()];
22
+ }
23
+ get useClauses() {
24
+ return [...this.useClausesMap.values()];
25
+ }
26
+ get errors() {
27
+ return [...this.errorsMap.values()];
28
+ }
29
+ addError(name, num) {
30
+ if (this.errorsMap.has(name)) {
31
+ return false;
32
+ }
33
+ else {
34
+ this.addUseClause('soroban_sdk', 'contracterror');
35
+ this.errorsMap.set(name, { name, num });
36
+ return true;
37
+ }
38
+ }
39
+ addUseClause(containerPath, name, options) {
40
+ var _a, _b;
41
+ // groupable defaults to true
42
+ const groupable = (_a = options === null || options === void 0 ? void 0 : options.groupable) !== null && _a !== void 0 ? _a : true;
43
+ const alias = (_b = options === null || options === void 0 ? void 0 : options.alias) !== null && _b !== void 0 ? _b : '';
44
+ const uniqueName = alias.length > 0 ? alias : name;
45
+ const present = this.useClausesMap.has(uniqueName);
46
+ if (!present) {
47
+ this.useClausesMap.set(uniqueName, { containerPath, name, groupable, alias });
48
+ }
49
+ }
50
+ addVariable(variable) {
51
+ if (this.variablesMap.has(variable.name)) {
52
+ return false;
53
+ }
54
+ else {
55
+ this.variablesMap.set(variable.name, variable);
56
+ return true;
57
+ }
58
+ }
59
+ addImplementedTrait(baseTrait) {
60
+ const key = baseTrait.name;
61
+ const existingTrait = this.implementedTraitsMap.get(key);
62
+ if (existingTrait !== undefined) {
63
+ return existingTrait;
64
+ }
65
+ else {
66
+ const t = {
67
+ name: baseTrait.name,
68
+ for: baseTrait.for,
69
+ tags: [...baseTrait.tags],
70
+ functions: [],
71
+ section: baseTrait.section,
72
+ priority: baseTrait.priority,
73
+ };
74
+ this.implementedTraitsMap.set(key, t);
75
+ return t;
76
+ }
77
+ }
78
+ addFunction(baseTrait, fn) {
79
+ const t = this.addImplementedTrait(baseTrait);
80
+ const signature = this.getFunctionSignature(fn);
81
+ // Look for the existing function with the same signature and return it if found
82
+ for (let i = 0; i < t.functions.length; i++) {
83
+ const existingFn = t.functions[i];
84
+ if (existingFn !== undefined && this.getFunctionSignature(existingFn) === signature) {
85
+ return existingFn;
86
+ }
87
+ }
88
+ // Otherwise, add the function
89
+ const contractFn = {
90
+ ...fn,
91
+ codeBefore: [],
92
+ };
93
+ t.functions.push(contractFn);
94
+ return contractFn;
95
+ }
96
+ getFunctionSignature(fn) {
97
+ return [fn.name, '(', ...fn.args.map(a => a.name), ')'].join('');
98
+ }
99
+ addFunctionCodeBefore(baseTrait, fn, codeBefore) {
100
+ var _a;
101
+ this.addImplementedTrait(baseTrait);
102
+ const existingFn = this.addFunction(baseTrait, fn);
103
+ existingFn.codeBefore = [...((_a = existingFn.codeBefore) !== null && _a !== void 0 ? _a : []), ...codeBefore];
104
+ }
105
+ addFunctionTag(baseTrait, fn, tag) {
106
+ this.addImplementedTrait(baseTrait);
107
+ const existingFn = this.addFunction(baseTrait, fn);
108
+ existingFn.tag = tag;
109
+ }
110
+ addConstructorArgument(arg) {
111
+ for (const existingArg of this.constructorArgs) {
112
+ if (existingArg.name == arg.name) {
113
+ return;
114
+ }
115
+ }
116
+ this.constructorArgs.push(arg);
117
+ }
118
+ addConstructorCode(code) {
119
+ this.constructorCode.push(code);
120
+ }
121
+ }
122
+ exports.ContractBuilder = ContractBuilder;
123
+ //# sourceMappingURL=contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.js","sourceRoot":"","sources":["../src/contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export type OptionsErrorMessages = {
2
+ [prop in string]?: string;
3
+ };
4
+ export declare class OptionsError extends Error {
5
+ readonly messages: OptionsErrorMessages;
6
+ constructor(messages: OptionsErrorMessages);
7
+ }
8
+ //# sourceMappingURL=error.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,oBAAoB,GAAG;KAAG,IAAI,IAAI,MAAM,CAAC,CAAC,EAAE,MAAM;CAAE,CAAC;AAEjE,qBAAa,YAAa,SAAQ,KAAK;IACzB,QAAQ,CAAC,QAAQ,EAAE,oBAAoB;gBAA9B,QAAQ,EAAE,oBAAoB;CAGpD"}
package/dist/error.js ADDED
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OptionsError = void 0;
4
+ class OptionsError extends Error {
5
+ constructor(messages) {
6
+ super('Invalid options');
7
+ this.messages = messages;
8
+ }
9
+ }
10
+ exports.OptionsError = OptionsError;
11
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error.js","sourceRoot":"","sources":["../src/error.ts"],"names":[],"mappings":";;;AAEA,MAAa,YAAa,SAAQ,KAAK;IACrC,YAAqB,QAA8B;QACjD,KAAK,CAAC,iBAAiB,CAAC,CAAC;QADN,aAAQ,GAAR,QAAQ,CAAsB;IAEnD,CAAC;CACF;AAJD,oCAIC"}
@@ -0,0 +1,24 @@
1
+ import type { Contract } from './contract';
2
+ import type { CommonContractOptions } from './common-options';
3
+ export declare const defaults: Required<FungibleOptions>;
4
+ export declare function printFungible(opts?: FungibleOptions): string;
5
+ export interface FungibleOptions extends CommonContractOptions {
6
+ name: string;
7
+ symbol: string;
8
+ burnable?: boolean;
9
+ pausable?: boolean;
10
+ premint?: string;
11
+ mintable?: boolean;
12
+ }
13
+ export declare function buildFungible(opts: FungibleOptions): Contract;
14
+ export declare const premintPattern: RegExp;
15
+ /**
16
+ * Calculates the initial supply that would be used in an Fungible contract based on a given premint amount and number of decimals.
17
+ *
18
+ * @param premint Premint amount in token units, may be fractional
19
+ * @param decimals The number of decimals in the token
20
+ * @returns `premint` with zeros padded or removed based on `decimals`.
21
+ * @throws OptionsError if `premint` has more than one decimal character or is more precise than allowed by the `decimals` argument.
22
+ */
23
+ export declare function getInitialSupply(premint: string, decimals: number): string;
24
+ //# sourceMappingURL=fungible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fungible.d.ts","sourceRoot":"","sources":["../src/fungible.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAM3C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAQ9D,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,eAAe,CASrC,CAAC;AAEX,wBAAgB,aAAa,CAAC,IAAI,GAAE,eAA0B,GAAG,MAAM,CAEtE;AAED,MAAM,WAAW,eAAgB,SAAQ,qBAAqB;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAaD,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CA2B7D;AA8DD,eAAO,MAAM,cAAc,QAAkB,CAAC;AAqB9C;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CA+B1E"}