@openzeppelin/wizard-stellar 0.4.4 → 0.4.5

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 (61) hide show
  1. package/dist/add-pausable.d.ts +1 -1
  2. package/dist/add-pausable.d.ts.map +1 -1
  3. package/dist/add-pausable.js +10 -8
  4. package/dist/add-pausable.js.map +1 -1
  5. package/dist/add-upgradeable.d.ts +1 -1
  6. package/dist/add-upgradeable.d.ts.map +1 -1
  7. package/dist/add-upgradeable.js +2 -2
  8. package/dist/add-upgradeable.js.map +1 -1
  9. package/dist/common-options.d.ts +1 -0
  10. package/dist/common-options.d.ts.map +1 -1
  11. package/dist/common-options.js +2 -0
  12. package/dist/common-options.js.map +1 -1
  13. package/dist/contract.d.ts +2 -0
  14. package/dist/contract.d.ts.map +1 -1
  15. package/dist/contract.js +7 -0
  16. package/dist/contract.js.map +1 -1
  17. package/dist/fungible.d.ts.map +1 -1
  18. package/dist/fungible.js +35 -14
  19. package/dist/fungible.js.map +1 -1
  20. package/dist/generate/fungible.d.ts.map +1 -1
  21. package/dist/generate/fungible.js +1 -0
  22. package/dist/generate/fungible.js.map +1 -1
  23. package/dist/generate/non-fungible.d.ts.map +1 -1
  24. package/dist/generate/non-fungible.js +1 -0
  25. package/dist/generate/non-fungible.js.map +1 -1
  26. package/dist/generate/stablecoin.d.ts.map +1 -1
  27. package/dist/generate/stablecoin.js +1 -0
  28. package/dist/generate/stablecoin.js.map +1 -1
  29. package/dist/non-fungible.d.ts +1 -1
  30. package/dist/non-fungible.d.ts.map +1 -1
  31. package/dist/non-fungible.js +86 -36
  32. package/dist/non-fungible.js.map +1 -1
  33. package/dist/set-access-control.d.ts +2 -2
  34. package/dist/set-access-control.d.ts.map +1 -1
  35. package/dist/set-access-control.js +105 -8
  36. package/dist/set-access-control.js.map +1 -1
  37. package/dist/stablecoin.d.ts +2 -1
  38. package/dist/stablecoin.d.ts.map +1 -1
  39. package/dist/stablecoin.js +27 -6
  40. package/dist/stablecoin.js.map +1 -1
  41. package/dist/utils/compile-test.d.ts +1 -0
  42. package/dist/utils/compile-test.d.ts.map +1 -1
  43. package/dist/utils/compile-test.js +19 -5
  44. package/dist/utils/compile-test.js.map +1 -1
  45. package/dist/zip-rust.d.ts.map +1 -1
  46. package/dist/zip-rust.js +4 -0
  47. package/dist/zip-rust.js.map +1 -1
  48. package/package.json +3 -3
  49. package/src/add-pausable.ts +30 -15
  50. package/src/add-upgradeable.ts +13 -6
  51. package/src/common-options.ts +3 -0
  52. package/src/contract.ts +9 -0
  53. package/src/fungible.ts +53 -19
  54. package/src/generate/fungible.ts +1 -0
  55. package/src/generate/non-fungible.ts +1 -0
  56. package/src/generate/stablecoin.ts +1 -0
  57. package/src/non-fungible.ts +123 -40
  58. package/src/set-access-control.ts +105 -7
  59. package/src/stablecoin.ts +39 -9
  60. package/src/utils/compile-test.ts +52 -25
  61. package/src/zip-rust.ts +5 -0
@@ -4,17 +4,17 @@ exports.defaults = void 0;
4
4
  exports.printNonFungible = printNonFungible;
5
5
  exports.isAccessControlRequired = isAccessControlRequired;
6
6
  exports.buildNonFungible = buildNonFungible;
7
- const contract_1 = require("./contract");
8
- const set_access_control_1 = require("./set-access-control");
7
+ const wizard_common_1 = require("@openzeppelin/wizard-common");
9
8
  const add_pausable_1 = require("./add-pausable");
10
9
  const add_upgradeable_1 = require("./add-upgradeable");
11
- const define_functions_1 = require("./utils/define-functions");
12
10
  const common_options_1 = require("./common-options");
13
- const set_info_1 = require("./set-info");
11
+ const contract_1 = require("./contract");
14
12
  const error_1 = require("./error");
15
- const common_options_2 = require("./common-options");
16
13
  const print_1 = require("./print");
14
+ const set_access_control_1 = require("./set-access-control");
15
+ const set_info_1 = require("./set-info");
17
16
  const convert_strings_1 = require("./utils/convert-strings");
17
+ const define_functions_1 = require("./utils/define-functions");
18
18
  exports.defaults = {
19
19
  name: 'MyToken',
20
20
  symbol: 'MTK',
@@ -26,8 +26,9 @@ exports.defaults = {
26
26
  upgradeable: false,
27
27
  mintable: false,
28
28
  sequential: false,
29
- access: common_options_2.contractDefaults.access, // TODO: Determine whether Access Control options should be visible in the UI before they are implemented as modules
30
- info: common_options_2.contractDefaults.info,
29
+ access: common_options_1.contractDefaults.access, // TODO: Determine whether Access Control options should be visible in the UI before they are implemented as modules
30
+ info: common_options_1.contractDefaults.info,
31
+ explicitImplementations: common_options_1.contractDefaults.explicitImplementations,
31
32
  };
32
33
  function printNonFungible(opts = exports.defaults) {
33
34
  return (0, print_1.printContract)(buildNonFungible(opts));
@@ -68,30 +69,30 @@ function buildNonFungible(opts) {
68
69
  if (Object.keys(errors).length > 0) {
69
70
  throw new error_1.OptionsError(errors);
70
71
  }
71
- addBase(c, (0, convert_strings_1.toByteArray)(allOpts.name), (0, convert_strings_1.toByteArray)(allOpts.symbol), (0, convert_strings_1.toByteArray)(allOpts.tokenUri), allOpts.pausable);
72
+ addBase(c, (0, convert_strings_1.toByteArray)(allOpts.name), (0, convert_strings_1.toByteArray)(allOpts.symbol), (0, convert_strings_1.toByteArray)(allOpts.tokenUri), allOpts.pausable, allOpts.explicitImplementations);
72
73
  if (allOpts.pausable) {
73
- (0, add_pausable_1.addPausable)(c, allOpts.access);
74
+ (0, add_pausable_1.addPausable)(c, allOpts.access, allOpts.explicitImplementations);
74
75
  }
75
76
  if (allOpts.upgradeable) {
76
- (0, add_upgradeable_1.addUpgradeable)(c, allOpts.access);
77
+ (0, add_upgradeable_1.addUpgradeable)(c, allOpts.access, allOpts.explicitImplementations);
77
78
  }
78
79
  if (allOpts.burnable) {
79
- addBurnable(c, allOpts.pausable);
80
+ addBurnable(c, allOpts.pausable, allOpts.explicitImplementations);
80
81
  }
81
82
  if (allOpts.enumerable) {
82
- addEnumerable(c);
83
+ addEnumerable(c, allOpts.explicitImplementations);
83
84
  }
84
85
  if (allOpts.consecutive) {
85
- addConsecutive(c, allOpts.pausable, allOpts.access);
86
+ addConsecutive(c, allOpts.pausable, allOpts.access, allOpts.explicitImplementations);
86
87
  }
87
88
  if (allOpts.mintable) {
88
- addMintable(c, allOpts.enumerable, allOpts.pausable, allOpts.sequential, allOpts.access);
89
+ addMintable(c, allOpts.enumerable, allOpts.pausable, allOpts.sequential, allOpts.access, allOpts.explicitImplementations);
89
90
  }
90
- (0, set_access_control_1.setAccessControl)(c, allOpts.access);
91
+ (0, set_access_control_1.setAccessControl)(c, allOpts.access, allOpts.explicitImplementations);
91
92
  (0, set_info_1.setInfo)(c, allOpts.info);
92
93
  return c;
93
94
  }
94
- function addBase(c, name, symbol, tokenUri, pausable) {
95
+ function addBase(c, name, symbol, tokenUri, pausable, explicitImplementations) {
95
96
  // Set metadata
96
97
  c.addConstructorCode(`let uri = String::from_str(e, "${tokenUri}");`);
97
98
  c.addConstructorCode(`let name = String::from_str(e, "${name}");`);
@@ -100,18 +101,25 @@ function addBase(c, name, symbol, tokenUri, pausable) {
100
101
  // Set token functions
101
102
  c.addUseClause('stellar_tokens::non_fungible', 'Base');
102
103
  c.addUseClause('stellar_tokens::non_fungible', 'NonFungibleToken');
103
- c.addUseClause('stellar_macros', 'default_impl');
104
+ if (explicitImplementations)
105
+ c.addUseClause('stellar_tokens::non_fungible', 'ContractOverrides');
106
+ else
107
+ c.addUseClause('stellar_macros', 'default_impl');
104
108
  c.addUseClause('soroban_sdk', 'contract');
105
109
  c.addUseClause('soroban_sdk', 'contractimpl');
106
110
  c.addUseClause('soroban_sdk', 'String');
107
111
  c.addUseClause('soroban_sdk', 'Env');
112
+ if (explicitImplementations || pausable)
113
+ c.addUseClause('soroban_sdk', 'Address');
108
114
  const nonFungibleTokenTrait = {
109
115
  traitName: 'NonFungibleToken',
110
116
  structName: c.name,
111
- tags: ['default_impl', 'contractimpl'],
117
+ tags: explicitImplementations ? ['contractimpl'] : ['default_impl', 'contractimpl'],
112
118
  assocType: 'type ContractType = Base;',
113
119
  };
114
120
  c.addTraitImplBlock(nonFungibleTokenTrait);
121
+ if (explicitImplementations)
122
+ c.addTraitForEachFunctions(nonFungibleTokenTrait, nonFungibleTokenTraitFunctions);
115
123
  if (pausable) {
116
124
  c.addUseClause('stellar_macros', 'when_not_paused');
117
125
  c.addTraitFunction(nonFungibleTokenTrait, baseFunctions.transfer);
@@ -120,7 +128,7 @@ function addBase(c, name, symbol, tokenUri, pausable) {
120
128
  c.addTraitFunction(nonFungibleTokenTrait, baseFunctions.transfer_from);
121
129
  }
122
130
  }
123
- function addBurnable(c, pausable) {
131
+ function addBurnable(c, pausable, explicitImplementations) {
124
132
  c.addUseClause('stellar_tokens::non_fungible', 'burnable::NonFungibleBurnable');
125
133
  const nonFungibleBurnableTrait = {
126
134
  traitName: 'NonFungibleBurnable',
@@ -135,27 +143,36 @@ function addBurnable(c, pausable) {
135
143
  c.addTraitFunction(nonFungibleBurnableTrait, burnableFunctions.burn_from);
136
144
  c.addFunctionTag(burnableFunctions.burn_from, 'when_not_paused', nonFungibleBurnableTrait);
137
145
  }
146
+ else if (explicitImplementations)
147
+ c.addTraitForEachFunctions(nonFungibleBurnableTrait, nonFungibleBurnableFunctions);
138
148
  else {
139
149
  // prepend '#[default_impl]'
140
150
  nonFungibleBurnableTrait.tags.unshift('default_impl');
141
151
  c.addTraitImplBlock(nonFungibleBurnableTrait);
142
152
  }
143
153
  }
144
- function addEnumerable(c) {
154
+ function addEnumerable(c, explicitImplementations) {
145
155
  c.addUseClause('stellar_tokens::non_fungible', 'enumerable::{NonFungibleEnumerable, Enumerable}');
146
- c.addUseClause('stellar_macros', 'default_impl');
156
+ if (explicitImplementations)
157
+ c.addUseClause('soroban_sdk', 'Address');
158
+ else
159
+ c.addUseClause('stellar_macros', 'default_impl');
147
160
  const nonFungibleEnumerableTrait = {
148
161
  traitName: 'NonFungibleEnumerable',
149
162
  structName: c.name,
150
- tags: ['default_impl', 'contractimpl'],
163
+ tags: explicitImplementations ? ['contractimpl'] : ['default_impl', 'contractimpl'],
151
164
  section: 'Extensions',
152
165
  };
153
- c.addTraitImplBlock(nonFungibleEnumerableTrait);
166
+ if (explicitImplementations)
167
+ c.addTraitForEachFunctions(nonFungibleEnumerableTrait, nonFungibleEnumerableTraitFunctions);
168
+ else
169
+ c.addTraitImplBlock(nonFungibleEnumerableTrait);
154
170
  c.overrideAssocType('NonFungibleToken', 'type ContractType = Enumerable;');
155
171
  }
156
- function addConsecutive(c, pausable, access) {
172
+ function addConsecutive(c, pausable, access, explicitImplementations) {
157
173
  c.addUseClause('stellar_tokens::non_fungible', 'consecutive::{NonFungibleConsecutive, Consecutive}');
158
174
  c.addUseClause('soroban_sdk', 'Address');
175
+ const effectiveAccess = access === false ? set_access_control_1.DEFAULT_ACCESS_CONTROL : access;
159
176
  const nonFungibleConsecutiveTrait = {
160
177
  traitName: 'NonFungibleConsecutive',
161
178
  structName: c.name,
@@ -164,43 +181,47 @@ function addConsecutive(c, pausable, access) {
164
181
  };
165
182
  c.addTraitImplBlock(nonFungibleConsecutiveTrait);
166
183
  c.overrideAssocType('NonFungibleToken', 'type ContractType = Consecutive;');
167
- const mintFn = access === 'ownable' ? consecutiveFunctions.batch_mint : consecutiveFunctions.batch_mint_with_caller;
184
+ const mintFn = effectiveAccess === 'ownable' ? consecutiveFunctions.batch_mint : consecutiveFunctions.batch_mint_with_caller;
168
185
  c.addFreeFunction(mintFn);
169
186
  if (pausable) {
170
187
  c.addFunctionTag(mintFn, 'when_not_paused');
171
188
  }
172
- (0, set_access_control_1.requireAccessControl)(c, undefined, mintFn, access, {
189
+ (0, set_access_control_1.requireAccessControl)(c, undefined, mintFn, effectiveAccess, {
173
190
  useMacro: true,
174
191
  role: 'minter',
175
192
  caller: 'caller',
176
- });
193
+ }, explicitImplementations);
177
194
  }
178
- function addMintable(c, enumerable, pausable, sequential, access) {
195
+ function addMintable(c, enumerable, pausable, sequential, access, explicitImplementations) {
179
196
  c.addUseClause('soroban_sdk', 'Address');
180
197
  const accessProps = { useMacro: true, role: 'minter', caller: 'caller' };
198
+ const effectiveAccess = access === false ? set_access_control_1.DEFAULT_ACCESS_CONTROL : access;
181
199
  let mintFn;
182
200
  if (enumerable) {
183
201
  if (sequential) {
184
202
  mintFn =
185
- access === 'ownable' ? enumerableFunctions.sequential_mint : enumerableFunctions.sequential_mint_with_caller;
203
+ effectiveAccess === 'ownable'
204
+ ? enumerableFunctions.sequential_mint
205
+ : enumerableFunctions.sequential_mint_with_caller;
186
206
  }
187
207
  else {
188
208
  mintFn =
189
- access === 'ownable'
209
+ effectiveAccess === 'ownable'
190
210
  ? enumerableFunctions.non_sequential_mint
191
211
  : enumerableFunctions.non_sequential_mint_with_caller;
192
212
  }
193
213
  }
194
214
  else {
195
215
  if (sequential) {
196
- mintFn = access === 'ownable' ? baseFunctions.sequential_mint : baseFunctions.sequential_mint_with_caller;
216
+ mintFn =
217
+ effectiveAccess === 'ownable' ? baseFunctions.sequential_mint : baseFunctions.sequential_mint_with_caller;
197
218
  }
198
219
  else {
199
- mintFn = access === 'ownable' ? baseFunctions.mint : baseFunctions.mint_with_caller;
220
+ mintFn = effectiveAccess === 'ownable' ? baseFunctions.mint : baseFunctions.mint_with_caller;
200
221
  }
201
222
  }
202
223
  c.addFreeFunction(mintFn);
203
- (0, set_access_control_1.requireAccessControl)(c, undefined, mintFn, access, accessProps);
224
+ (0, set_access_control_1.requireAccessControl)(c, undefined, mintFn, effectiveAccess, accessProps, explicitImplementations);
204
225
  if (pausable) {
205
226
  c.addFunctionTag(mintFn, 'when_not_paused');
206
227
  }
@@ -306,6 +327,19 @@ const baseFunctions = (0, define_functions_1.defineFunctions)({
306
327
  code: ['Base::sequential_mint(e, &to);'],
307
328
  },
308
329
  });
330
+ const nonFungibleTokenTraitFunctions = (0, wizard_common_1.pickKeys)(baseFunctions, [
331
+ 'balance',
332
+ 'owner_of',
333
+ 'transfer',
334
+ 'transfer_from',
335
+ 'approve',
336
+ 'approve_for_all',
337
+ 'get_approved',
338
+ 'is_approved_for_all',
339
+ 'name',
340
+ 'symbol',
341
+ 'token_uri',
342
+ ]);
309
343
  const burnableFunctions = (0, define_functions_1.defineFunctions)({
310
344
  burn: {
311
345
  args: [(0, common_options_1.getSelfArg)(), { name: 'from', type: 'Address' }, { name: 'token_id', type: 'u32' }],
@@ -321,11 +355,22 @@ const burnableFunctions = (0, define_functions_1.defineFunctions)({
321
355
  code: ['Self::ContractType::burn_from(e, &spender, &from, token_id)'],
322
356
  },
323
357
  });
358
+ const nonFungibleBurnableFunctions = (0, wizard_common_1.pickKeys)(burnableFunctions, ['burn', 'burn_from']);
324
359
  const enumerableFunctions = (0, define_functions_1.defineFunctions)({
325
360
  total_supply: {
326
361
  args: [(0, common_options_1.getSelfArg)()],
327
362
  returns: 'u32',
328
- code: ['non_fungible::enumerable::Enumerable::total_supply(e)'],
363
+ code: ['Enumerable::total_supply(e)'],
364
+ },
365
+ get_owner_token_id: {
366
+ args: [(0, common_options_1.getSelfArg)(), { name: 'owner', type: 'Address' }, { name: 'index', type: 'u32' }],
367
+ returns: 'u32',
368
+ code: ['Enumerable::get_owner_token_id(e, &owner, index)'],
369
+ },
370
+ get_token_id: {
371
+ args: [(0, common_options_1.getSelfArg)(), { name: 'index', type: 'u32' }],
372
+ returns: 'u32',
373
+ code: ['Enumerable::get_token_id(e, index)'],
329
374
  },
330
375
  non_sequential_mint: {
331
376
  name: 'mint',
@@ -353,12 +398,17 @@ const enumerableFunctions = (0, define_functions_1.defineFunctions)({
353
398
  code: ['Enumerable::sequential_mint(e, &to);'],
354
399
  },
355
400
  });
401
+ const nonFungibleEnumerableTraitFunctions = (0, wizard_common_1.pickKeys)(enumerableFunctions, [
402
+ 'total_supply',
403
+ 'get_owner_token_id',
404
+ 'get_token_id',
405
+ ]);
356
406
  const consecutiveFunctions = (0, define_functions_1.defineFunctions)({
357
407
  batch_mint: {
358
408
  name: 'batch_mint',
359
409
  args: [(0, common_options_1.getSelfArg)(), { name: 'to', type: 'Address' }, { name: 'amount', type: 'u32' }],
360
410
  returns: 'u32',
361
- code: ['Consecutive::batch_mint(e, &to, amount);'],
411
+ code: ['Consecutive::batch_mint(e, &to, amount)'],
362
412
  },
363
413
  batch_mint_with_caller: {
364
414
  name: 'batch_mint',
@@ -369,7 +419,7 @@ const consecutiveFunctions = (0, define_functions_1.defineFunctions)({
369
419
  { name: 'caller', type: 'Address' },
370
420
  ],
371
421
  returns: 'u32',
372
- code: ['Consecutive::batch_mint(e, &to, amount);'],
422
+ code: ['Consecutive::batch_mint(e, &to, amount)'],
373
423
  },
374
424
  });
375
425
  //# sourceMappingURL=non-fungible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"non-fungible.js","sourceRoot":"","sources":["../src/non-fungible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"non-fungible.js","sourceRoot":"","sources":["../src/non-fungible.ts"],"names":[],"mappings":"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"}
@@ -10,9 +10,9 @@ export type AccessProps = {
10
10
  /**
11
11
  * Sets access control for the contract via constructor args.
12
12
  */
13
- export declare function setAccessControl(c: ContractBuilder, access: Access): void;
13
+ export declare function setAccessControl(c: ContractBuilder, access: Access, explicitImplementations?: boolean): void;
14
14
  /**
15
15
  * Enables access control for the contract and restricts the given function with access control.
16
16
  */
17
- export declare function requireAccessControl(c: ContractBuilder, trait: BaseTraitImplBlock | undefined, fn: BaseFunction, access: Access, accessProps?: AccessProps): void;
17
+ export declare function requireAccessControl(c: ContractBuilder, trait: BaseTraitImplBlock | undefined, fn: BaseFunction, access: Access, accessProps?: AccessProps, explicitImplementations?: boolean): void;
18
18
  //# sourceMappingURL=set-access-control.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-access-control.d.ts","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEpF,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAClE,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CA8CzE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,eAAe,EAClB,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,WAAgC,GAC5C,IAAI,CAoDN"}
1
+ {"version":3,"file":"set-access-control.d.ts","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGpF,eAAO,MAAM,aAAa,sCAAuC,CAAC;AAClE,eAAO,MAAM,sBAAsB,YAAY,CAAC;AAEhD,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AACpD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,uBAAuB,UAAQ,GAAG,IAAI,CAuD1G;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,CAAC,EAAE,eAAe,EAClB,KAAK,EAAE,kBAAkB,GAAG,SAAS,EACrC,EAAE,EAAE,YAAY,EAChB,MAAM,EAAE,MAAM,EACd,WAAW,GAAE,WAAgC,EAC7C,uBAAuB,UAAQ,GAC9B,IAAI,CAoDN"}
@@ -3,12 +3,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DEFAULT_ACCESS_CONTROL = exports.accessOptions = void 0;
4
4
  exports.setAccessControl = setAccessControl;
5
5
  exports.requireAccessControl = requireAccessControl;
6
+ const common_options_1 = require("./common-options");
7
+ const define_functions_1 = require("./utils/define-functions");
6
8
  exports.accessOptions = [false, 'ownable', 'roles'];
7
9
  exports.DEFAULT_ACCESS_CONTROL = 'ownable';
8
10
  /**
9
11
  * Sets access control for the contract via constructor args.
10
12
  */
11
- function setAccessControl(c, access) {
13
+ function setAccessControl(c, access, explicitImplementations = false) {
12
14
  switch (access) {
13
15
  case false:
14
16
  break;
@@ -21,10 +23,15 @@ function setAccessControl(c, access) {
21
23
  const ownableTrait = {
22
24
  traitName: 'Ownable',
23
25
  structName: c.name,
24
- tags: ['default_impl', 'contractimpl'],
26
+ tags: explicitImplementations ? ['contractimpl'] : ['default_impl', 'contractimpl'],
25
27
  section: 'Utils',
26
28
  };
27
- c.addTraitImplBlock(ownableTrait);
29
+ if (explicitImplementations) {
30
+ c.addTraitForEachFunctions(ownableTrait, ownableFunctions);
31
+ }
32
+ else {
33
+ c.addTraitImplBlock(ownableTrait);
34
+ }
28
35
  c.addConstructorArgument({ name: 'owner', type: 'Address' });
29
36
  c.addConstructorCode('ownable::set_owner(e, &owner);');
30
37
  }
@@ -34,13 +41,19 @@ function setAccessControl(c, access) {
34
41
  c.addUseClause('soroban_sdk', 'Address');
35
42
  c.addUseClause('stellar_access::access_control', 'self', { alias: 'access_control' });
36
43
  c.addUseClause('stellar_access::access_control', 'AccessControl');
37
- const accessControltrait = {
44
+ const accessControlTrait = {
38
45
  traitName: 'AccessControl',
39
46
  structName: c.name,
40
- tags: ['default_impl', 'contractimpl'],
47
+ tags: explicitImplementations ? ['contractimpl'] : ['default_impl', 'contractimpl'],
41
48
  section: 'Utils',
42
49
  };
43
- c.addTraitImplBlock(accessControltrait);
50
+ if (explicitImplementations) {
51
+ c.addUseClause('soroban_sdk', 'Symbol');
52
+ c.addTraitForEachFunctions(accessControlTrait, accessControlFunctions);
53
+ }
54
+ else {
55
+ c.addTraitImplBlock(accessControlTrait);
56
+ }
44
57
  c.addConstructorArgument({ name: 'admin', type: 'Address' });
45
58
  c.addConstructorCode('access_control::set_admin(e, &admin);');
46
59
  break;
@@ -54,11 +67,11 @@ function setAccessControl(c, access) {
54
67
  /**
55
68
  * Enables access control for the contract and restricts the given function with access control.
56
69
  */
57
- function requireAccessControl(c, trait, fn, access, accessProps = { useMacro: true }) {
70
+ function requireAccessControl(c, trait, fn, access, accessProps = { useMacro: true }, explicitImplementations = false) {
58
71
  if (access === false) {
59
72
  access = exports.DEFAULT_ACCESS_CONTROL;
60
73
  }
61
- setAccessControl(c, access);
74
+ setAccessControl(c, access, explicitImplementations);
62
75
  switch (access) {
63
76
  case 'ownable': {
64
77
  c.addUseClause('stellar_macros', 'only_owner');
@@ -101,4 +114,88 @@ function requireAccessControl(c, trait, fn, access, accessProps = { useMacro: tr
101
114
  }
102
115
  }
103
116
  }
117
+ const ownableFunctions = (0, define_functions_1.defineFunctions)({
118
+ get_owner: {
119
+ args: [(0, common_options_1.getSelfArg)()],
120
+ returns: 'Option<Address>',
121
+ code: ['ownable::get_owner(e)'],
122
+ },
123
+ transfer_ownership: {
124
+ args: [(0, common_options_1.getSelfArg)(), { name: 'new_owner', type: 'Address' }, { name: 'live_until_ledger', type: 'u32' }],
125
+ code: ['ownable::transfer_ownership(e, &new_owner, live_until_ledger);'],
126
+ },
127
+ accept_ownership: {
128
+ args: [(0, common_options_1.getSelfArg)()],
129
+ code: ['ownable::accept_ownership(e);'],
130
+ },
131
+ renounce_ownership: {
132
+ args: [(0, common_options_1.getSelfArg)()],
133
+ code: ['ownable::renounce_ownership(e);'],
134
+ },
135
+ });
136
+ const accessControlFunctions = (0, define_functions_1.defineFunctions)({
137
+ has_role: {
138
+ args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }, { name: 'role', type: 'Symbol' }],
139
+ returns: 'Option<u32>',
140
+ code: ['access_control::has_role(e, &account, &role)'],
141
+ },
142
+ get_role_member_count: {
143
+ args: [(0, common_options_1.getSelfArg)(), { name: 'role', type: 'Symbol' }],
144
+ returns: 'u32',
145
+ code: ['access_control::get_role_member_count(e, &role)'],
146
+ },
147
+ get_role_member: {
148
+ args: [(0, common_options_1.getSelfArg)(), { name: 'role', type: 'Symbol' }, { name: 'index', type: 'u32' }],
149
+ returns: 'Address',
150
+ code: ['access_control::get_role_member(e, &role, index)'],
151
+ },
152
+ get_role_admin: {
153
+ args: [(0, common_options_1.getSelfArg)(), { name: 'role', type: 'Symbol' }],
154
+ returns: 'Option<Symbol>',
155
+ code: ['access_control::get_role_admin(e, &role)'],
156
+ },
157
+ get_admin: {
158
+ args: [(0, common_options_1.getSelfArg)()],
159
+ returns: 'Option<Address>',
160
+ code: ['access_control::get_admin(e)'],
161
+ },
162
+ grant_role: {
163
+ args: [
164
+ (0, common_options_1.getSelfArg)(),
165
+ { name: 'caller', type: 'Address' },
166
+ { name: 'account', type: 'Address' },
167
+ { name: 'role', type: 'Symbol' },
168
+ ],
169
+ code: ['access_control::grant_role(e, &caller, &account, &role);'],
170
+ },
171
+ revoke_role: {
172
+ args: [
173
+ (0, common_options_1.getSelfArg)(),
174
+ { name: 'caller', type: 'Address' },
175
+ { name: 'account', type: 'Address' },
176
+ { name: 'role', type: 'Symbol' },
177
+ ],
178
+ code: ['access_control::revoke_role(e, &caller, &account, &role);'],
179
+ },
180
+ renounce_role: {
181
+ args: [(0, common_options_1.getSelfArg)(), { name: 'caller', type: 'Address' }, { name: 'role', type: 'Symbol' }],
182
+ code: ['access_control::renounce_role(e, &caller, &role);'],
183
+ },
184
+ transfer_admin_role: {
185
+ args: [(0, common_options_1.getSelfArg)(), { name: 'new_admin', type: 'Address' }, { name: 'live_until_ledger', type: 'u32' }],
186
+ code: ['access_control::transfer_admin_role(e, &new_admin, live_until_ledger);'],
187
+ },
188
+ accept_admin_transfer: {
189
+ args: [(0, common_options_1.getSelfArg)()],
190
+ code: ['access_control::accept_admin_transfer(e);'],
191
+ },
192
+ set_role_admin: {
193
+ args: [(0, common_options_1.getSelfArg)(), { name: 'role', type: 'Symbol' }, { name: 'admin_role', type: 'Symbol' }],
194
+ code: ['access_control::set_role_admin(e, &role, &admin_role);'],
195
+ },
196
+ renounce_admin: {
197
+ args: [(0, common_options_1.getSelfArg)()],
198
+ code: ['access_control::renounce_admin(e);'],
199
+ },
200
+ });
104
201
  //# sourceMappingURL=set-access-control.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"set-access-control.js","sourceRoot":"","sources":["../src/set-access-control.ts"],"names":[],"mappings":";;;AAiBA,4CAuDC;AAKD,oDA2DC;AAxID,qDAA8C;AAE9C,+DAA2D;AAE9C,QAAA,aAAa,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAU,CAAC;AACrD,QAAA,sBAAsB,GAAG,SAAS,CAAC;AAShD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,CAAkB,EAAE,MAAc,EAAE,uBAAuB,GAAG,KAAK;IAClG,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,KAAK;YACR,MAAM;QACR,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;gBACf,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;gBACzC,CAAC,CAAC,YAAY,CAAC,yBAAyB,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;gBACxE,CAAC,CAAC,YAAY,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;gBAErD,MAAM,YAAY,GAAG;oBACnB,SAAS,EAAE,SAAS;oBACpB,UAAU,EAAE,CAAC,CAAC,IAAI;oBAClB,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC;oBACnF,OAAO,EAAE,OAAO;iBACjB,CAAC;gBACF,IAAI,uBAAuB,EAAE,CAAC;oBAC5B,CAAC,CAAC,wBAAwB,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;gBAC7D,CAAC;qBAAM,CAAC;oBACN,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;gBACpC,CAAC;gBAED,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC7D,CAAC,CAAC,kBAAkB,CAAC,gCAAgC,CAAC,CAAC;YACzD,CAAC;YACD,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YACzC,CAAC,CAAC,YAAY,CAAC,gCAAgC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,CAAC,CAAC;YACtF,CAAC,CAAC,YAAY,CAAC,gCAAgC,EAAE,eAAe,CAAC,CAAC;YAElE,MAAM,kBAAkB,GAAG;gBACzB,SAAS,EAAE,eAAe;gBAC1B,UAAU,EAAE,CAAC,CAAC,IAAI;gBAClB,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,cAAc,CAAC;gBACnF,OAAO,EAAE,OAAO;aACjB,CAAC;YACF,IAAI,uBAAuB,EAAE,CAAC;gBAC5B,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC,CAAC,wBAAwB,CAAC,kBAAkB,EAAE,sBAAsB,CAAC,CAAC;YACzE,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC;YAC1C,CAAC;YAED,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YAC7D,CAAC,CAAC,kBAAkB,CAAC,uCAAuC,CAAC,CAAC;YAC9D,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAClC,CAAkB,EAClB,KAAqC,EACrC,EAAgB,EAChB,MAAc,EACd,cAA2B,EAAE,QAAQ,EAAE,IAAI,EAAE,EAC7C,uBAAuB,GAAG,KAAK;IAE/B,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,MAAM,GAAG,8BAAsB,CAAC;IAClC,CAAC;IACD,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,uBAAuB,CAAC,CAAC;IAErD,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;YAE/C,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACzB,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,iCAAiC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1E,CAAC;YAED,MAAM;QACR,CAAC;QACD,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;YAE/C,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;gBACnB,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;gBACxC,CAAC,CAAC,sBAAsB,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;gBAC1D,CAAC,CAAC,kBAAkB,CAAC,kDAAkD,IAAI,sBAAsB,IAAI,MAAM,CAAC,CAAC;gBAE7G,IAAI,QAAQ,EAAE,CAAC;oBACb,CAAC,CAAC,YAAY,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;oBAC9C,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,aAAa,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjE,CAAC;qBAAM,CAAC;oBACN,CAAC,CAAC,qBAAqB,CACrB,EAAE,EACF,CAAC,kCAAkC,MAAM,sBAAsB,IAAI,MAAM,CAAC,EAC1E,KAAK,CACN,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,QAAQ,EAAE,CAAC;oBACb,CAAC,CAAC,YAAY,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;oBAC/C,CAAC,CAAC,cAAc,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC;gBAC5C,CAAC;qBAAM,CAAC;oBACN,CAAC,CAAC,qBAAqB,CAAC,EAAE,EAAE,CAAC,wCAAwC,CAAC,EAAE,KAAK,CAAC,CAAC;gBACjF,CAAC;YACH,CAAC;YAED,MAAM;QACR,CAAC;QACD,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,CAAC,GAAU,MAAM,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChD,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAA,kCAAe,EAAC;IACvC,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,CAAC,uBAAuB,CAAC;KAChC;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxG,IAAI,EAAE,CAAC,gEAAgE,CAAC;KACzE;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,IAAI,EAAE,CAAC,+BAA+B,CAAC;KACxC;IACD,kBAAkB,EAAE;QAClB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,IAAI,EAAE,CAAC,iCAAiC,CAAC;KAC1C;CACF,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAG,IAAA,kCAAe,EAAC;IAC7C,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC5F,OAAO,EAAE,aAAa;QACtB,IAAI,EAAE,CAAC,8CAA8C,CAAC;KACvD;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtD,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,CAAC,iDAAiD,CAAC;KAC1D;IACD,eAAe,EAAE;QACf,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACtF,OAAO,EAAE,SAAS;QAClB,IAAI,EAAE,CAAC,kDAAkD,CAAC;KAC3D;IACD,cAAc,EAAE;QACd,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QACtD,OAAO,EAAE,gBAAgB;QACzB,IAAI,EAAE,CAAC,0CAA0C,CAAC;KACnD;IACD,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,CAAC,8BAA8B,CAAC;KACvC;IACD,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAA,2BAAU,GAAE;YACZ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;SACjC;QACD,IAAI,EAAE,CAAC,0DAA0D,CAAC;KACnE;IACD,WAAW,EAAE;QACX,IAAI,EAAE;YACJ,IAAA,2BAAU,GAAE;YACZ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE;YACnC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE;YACpC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;SACjC;QACD,IAAI,EAAE,CAAC,2DAA2D,CAAC;KACpE;IACD,aAAa,EAAE;QACb,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC3F,IAAI,EAAE,CAAC,mDAAmD,CAAC;KAC5D;IACD,mBAAmB,EAAE;QACnB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACxG,IAAI,EAAE,CAAC,wEAAwE,CAAC;KACjF;IACD,qBAAqB,EAAE;QACrB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,IAAI,EAAE,CAAC,2CAA2C,CAAC;KACpD;IACD,cAAc,EAAE;QACd,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;QAC9F,IAAI,EAAE,CAAC,wDAAwD,CAAC;KACjE;IACD,cAAc,EAAE;QACd,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,IAAI,EAAE,CAAC,oCAAoC,CAAC;KAC7C;CACF,CAAC,CAAC"}
@@ -2,9 +2,10 @@ import type { Contract } from './contract';
2
2
  import type { FungibleOptions } from './fungible';
3
3
  export declare const defaults: Required<StablecoinOptions>;
4
4
  export declare const limitationsOptions: readonly [false, "allowlist", "blocklist"];
5
+ export type Limitations = (typeof limitationsOptions)[number];
5
6
  export declare function printStablecoin(opts?: StablecoinOptions): string;
6
7
  export interface StablecoinOptions extends FungibleOptions {
7
- limitations?: false | 'allowlist' | 'blocklist';
8
+ limitations?: Limitations;
8
9
  }
9
10
  export declare function isAccessControlRequired(opts: Partial<StablecoinOptions>): boolean;
10
11
  export declare function buildStablecoin(opts: StablecoinOptions): Contract;
@@ -1 +1 @@
1
- {"version":3,"file":"stablecoin.d.ts","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAI5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAUlD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAKvC,CAAC;AAEX,eAAO,MAAM,kBAAkB,4CAA6C,CAAC;AAE7E,wBAAgB,eAAe,CAAC,IAAI,GAAE,iBAA4B,GAAG,MAAM,CAE1E;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,WAAW,CAAC,EAAE,KAAK,GAAG,WAAW,GAAG,WAAW,CAAC;CACjD;AAWD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAEjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,QAAQ,CAUjE"}
1
+ {"version":3,"file":"stablecoin.d.ts","sourceRoot":"","sources":["../src/stablecoin.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAmB,MAAM,YAAY,CAAC;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAYlD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAKvC,CAAC;AAEX,eAAO,MAAM,kBAAkB,4CAA6C,CAAC;AAC7E,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,wBAAgB,eAAe,CAAC,IAAI,GAAE,iBAA4B,GAAG,MAAM,CAE1E;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAWD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,OAAO,CAEjF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,GAAG,QAAQ,CAUjE"}
@@ -4,11 +4,11 @@ exports.limitationsOptions = exports.defaults = void 0;
4
4
  exports.printStablecoin = printStablecoin;
5
5
  exports.isAccessControlRequired = isAccessControlRequired;
6
6
  exports.buildStablecoin = buildStablecoin;
7
- const define_functions_1 = require("./utils/define-functions");
8
7
  const common_options_1 = require("./common-options");
9
- const print_1 = require("./print");
10
8
  const fungible_1 = require("./fungible");
9
+ const print_1 = require("./print");
11
10
  const set_access_control_1 = require("./set-access-control");
11
+ const define_functions_1 = require("./utils/define-functions");
12
12
  exports.defaults = {
13
13
  ...fungible_1.defaults,
14
14
  name: 'MyStablecoin',
@@ -34,11 +34,11 @@ function buildStablecoin(opts) {
34
34
  const allOpts = withDefaults(opts);
35
35
  const c = (0, fungible_1.buildFungible)(allOpts);
36
36
  if (allOpts.limitations) {
37
- addLimitations(c, allOpts.access, allOpts.limitations);
37
+ addLimitations(c, allOpts.access, allOpts.limitations, allOpts.explicitImplementations);
38
38
  }
39
39
  return c;
40
40
  }
41
- function addLimitations(c, access, mode) {
41
+ function addLimitations(c, access, mode, explicitImplementations) {
42
42
  const type = mode === 'allowlist';
43
43
  const limitationsTrait = {
44
44
  traitName: type ? 'FungibleAllowList' : 'FungibleBlockList',
@@ -54,6 +54,8 @@ function addLimitations(c, access, mode) {
54
54
  c.addUseClause('stellar_tokens::fungible', 'blocklist::{BlockList, FungibleBlockList}');
55
55
  c.overrideAssocType('FungibleToken', 'type ContractType = BlockList;');
56
56
  }
57
+ if (explicitImplementations)
58
+ overrideFungibleReadonlyFunctionsWithBase(c);
57
59
  const [getterFn, addFn, removeFn] = type
58
60
  ? [functions.allowed, functions.allow_user, functions.disallow_user]
59
61
  : [functions.blocked, functions.block_user, functions.unblock_user];
@@ -64,9 +66,28 @@ function addLimitations(c, access, mode) {
64
66
  caller: 'operator',
65
67
  };
66
68
  c.addTraitFunction(limitationsTrait, addFn);
67
- (0, set_access_control_1.requireAccessControl)(c, limitationsTrait, addFn, access, accessProps);
69
+ (0, set_access_control_1.requireAccessControl)(c, limitationsTrait, addFn, access, accessProps, explicitImplementations);
68
70
  c.addTraitFunction(limitationsTrait, removeFn);
69
- (0, set_access_control_1.requireAccessControl)(c, limitationsTrait, removeFn, access, accessProps);
71
+ (0, set_access_control_1.requireAccessControl)(c, limitationsTrait, removeFn, access, accessProps, explicitImplementations);
72
+ }
73
+ function overrideFungibleReadonlyFunctionsWithBase(c) {
74
+ c.addUseClause('stellar_tokens::fungible', 'ContractOverrides');
75
+ const fungibleTokenTrait = {
76
+ traitName: 'FungibleToken',
77
+ structName: c.name,
78
+ tags: [],
79
+ };
80
+ const overrides = [
81
+ [fungible_1.functions.total_supply, ['Self::ContractType::total_supply(e)']],
82
+ [fungible_1.functions.balance, ['Self::ContractType::balance(e, &account)']],
83
+ [fungible_1.functions.allowance, ['Self::ContractType::allowance(e, &owner, &spender)']],
84
+ [fungible_1.functions.decimals, ['Self::ContractType::decimals(e)']],
85
+ [fungible_1.functions.name, ['Self::ContractType::name(e)']],
86
+ [fungible_1.functions.symbol, ['Self::ContractType::symbol(e)']],
87
+ ];
88
+ for (const [fn, code] of overrides) {
89
+ c.setFunctionCode(fn, code, fungibleTokenTrait);
90
+ }
70
91
  }
71
92
  const functions = {
72
93
  ...fungible_1.functions,