@openzeppelin/wizard-stellar 0.6.4 → 0.7.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.
- package/dist/account.d.ts.map +1 -1
- package/dist/account.js +18 -4
- package/dist/account.js.map +1 -1
- package/dist/add-votes.d.ts +3 -0
- package/dist/add-votes.d.ts.map +1 -0
- package/dist/add-votes.js +53 -0
- package/dist/add-votes.js.map +1 -0
- package/dist/fungible.d.ts +13 -2
- package/dist/fungible.d.ts.map +1 -1
- package/dist/fungible.js +147 -77
- package/dist/fungible.js.map +1 -1
- package/dist/generate/fungible.d.ts.map +1 -1
- package/dist/generate/fungible.js +2 -0
- package/dist/generate/fungible.js.map +1 -1
- package/dist/generate/non-fungible.d.ts.map +1 -1
- package/dist/generate/non-fungible.js +2 -0
- package/dist/generate/non-fungible.js.map +1 -1
- package/dist/generate/stablecoin.d.ts.map +1 -1
- package/dist/generate/stablecoin.js +2 -0
- package/dist/generate/stablecoin.js.map +1 -1
- package/dist/governor.d.ts.map +1 -1
- package/dist/governor.js +9 -1
- package/dist/governor.js.map +1 -1
- package/dist/non-fungible.d.ts +2 -0
- package/dist/non-fungible.d.ts.map +1 -1
- package/dist/non-fungible.js +152 -126
- package/dist/non-fungible.js.map +1 -1
- package/dist/print.js +16 -1
- package/dist/print.js.map +1 -1
- package/dist/stablecoin.d.ts.map +1 -1
- package/dist/stablecoin.js +6 -31
- package/dist/stablecoin.js.map +1 -1
- package/dist/utils/compose.d.ts +6 -0
- package/dist/utils/compose.d.ts.map +1 -0
- package/dist/utils/compose.js +12 -0
- package/dist/utils/compose.js.map +1 -0
- package/dist/utils/version.d.ts +4 -4
- package/dist/utils/version.js +3 -3
- package/dist/vault.d.ts +1 -1
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +27 -7
- package/dist/vault.js.map +1 -1
- package/dist/zip-shared.d.ts.map +1 -1
- package/dist/zip-shared.js +4 -3
- package/dist/zip-shared.js.map +1 -1
- package/package.json +1 -1
- package/src/account.ts +18 -4
- package/src/add-votes.ts +53 -0
- package/src/fungible.ts +171 -86
- package/src/generate/fungible.ts +2 -0
- package/src/generate/non-fungible.ts +2 -0
- package/src/generate/stablecoin.ts +2 -0
- package/src/governor.ts +10 -1
- package/src/non-fungible.ts +182 -143
- package/src/print.ts +14 -1
- package/src/stablecoin.ts +9 -37
- package/src/utils/compose.ts +8 -0
- package/src/utils/version.ts +3 -3
- package/src/vault.ts +32 -7
- package/src/zip-shared.ts +4 -3
package/dist/account.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,eAAO,MAAM,aAAa,4DAA6D,CAAC;AAExF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAgBpD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,cAAc,CASpC,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,GAAE,cAAyB,GAAG,MAAM,CAEpE;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAW3E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CA0BlE;
|
|
1
|
+
{"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAG7C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,eAAO,MAAM,aAAa,4DAA6D,CAAC;AAExF,MAAM,MAAM,MAAM,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAgBpD,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,cAAc,CASpC,CAAC;AAEX,wBAAgB,YAAY,CAAC,IAAI,GAAE,cAAyB,GAAG,MAAM,CAEpE;AAED,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,CAW3E;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,cAAc,GAAG,eAAe,CA0BlE;AAqOD,eAAO,MAAM,SAAS,2DAYpB,CAAC"}
|
package/dist/account.js
CHANGED
|
@@ -93,6 +93,7 @@ function addBase(c, opts) {
|
|
|
93
93
|
c.addUseClause('soroban_sdk', 'contract');
|
|
94
94
|
c.addUseClause('soroban_sdk', 'contractimpl');
|
|
95
95
|
c.addUseClause('soroban_sdk', 'Address');
|
|
96
|
+
c.addUseClause('soroban_sdk', 'BytesN');
|
|
96
97
|
c.addUseClause('soroban_sdk', 'Env');
|
|
97
98
|
c.addUseClause('soroban_sdk', 'Map');
|
|
98
99
|
c.addUseClause('soroban_sdk', 'String');
|
|
@@ -102,10 +103,11 @@ function addBase(c, opts) {
|
|
|
102
103
|
c.addUseClause('soroban_sdk::auth', 'CustomAccountInterface');
|
|
103
104
|
c.addUseClause('soroban_sdk::crypto', 'Hash');
|
|
104
105
|
c.addUseClause('stellar_accounts::smart_account', 'self', { alias: 'smart_account' });
|
|
106
|
+
// `ContextRule` and `AuthDigestPreimage`/`BytesN` appear in the signatures of
|
|
107
|
+
// `SmartAccount` methods (e.g. `auth_digest`), which the contracttrait macro
|
|
108
|
+
// needs in scope even though the generated code never names them.
|
|
109
|
+
c.addUseClause('stellar_accounts::smart_account', 'AuthDigestPreimage');
|
|
105
110
|
c.addUseClause('stellar_accounts::smart_account', 'AuthPayload');
|
|
106
|
-
// `ContextRule` is the return type of several `SmartAccount` methods, which the
|
|
107
|
-
// contracttrait macro needs in scope even though the generated code never
|
|
108
|
-
// names it.
|
|
109
111
|
c.addUseClause('stellar_accounts::smart_account', 'ContextRule');
|
|
110
112
|
c.addUseClause('stellar_accounts::smart_account', 'ContextRuleType');
|
|
111
113
|
c.addUseClause('stellar_accounts::smart_account', 'Signer');
|
|
@@ -117,7 +119,19 @@ function addBase(c, opts) {
|
|
|
117
119
|
const signerLines = ['let mut signers = Vec::new(e);'];
|
|
118
120
|
if (opts.delegatedSigners) {
|
|
119
121
|
signerArgs.push('delegated_signers');
|
|
120
|
-
|
|
122
|
+
// The library rejects a delegated signer that is the account itself or the
|
|
123
|
+
// contract of an authorized context, but cannot detect this case.
|
|
124
|
+
c.addConstructorArgument({
|
|
125
|
+
name: 'delegated_signers',
|
|
126
|
+
type: 'Vec<Address>',
|
|
127
|
+
comment: [
|
|
128
|
+
'A delegated signer must not delegate its own authentication back to this',
|
|
129
|
+
'account, through `delegate_auth` (CAP-71) or by calling `require_auth` on',
|
|
130
|
+
'this account from its `__check_auth`, unless it is another smart account',
|
|
131
|
+
'built on OpenZeppelin Stellar Contracts. Otherwise, one of the two',
|
|
132
|
+
'accounts can be authorized without any key.',
|
|
133
|
+
],
|
|
134
|
+
});
|
|
121
135
|
signerLines.push('for account in delegated_signers.iter() {', ' signers.push_back(Signer::Delegated(account));', '}');
|
|
122
136
|
}
|
|
123
137
|
for (const { option, prefix, label } of externalSigners) {
|
package/dist/account.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../src/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-votes.d.ts","sourceRoot":"","sources":["../src/add-votes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,eAAe,EAAE,uBAAuB,EAAE,OAAO,QAgB5E"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addVotes = addVotes;
|
|
4
|
+
const common_options_1 = require("./common-options");
|
|
5
|
+
const define_functions_1 = require("./utils/define-functions");
|
|
6
|
+
function addVotes(c, explicitImplementations) {
|
|
7
|
+
c.addUseClause('stellar_governance::votes', 'Votes');
|
|
8
|
+
const votesTrait = {
|
|
9
|
+
traitName: 'Votes',
|
|
10
|
+
structName: c.name,
|
|
11
|
+
tags: explicitImplementations ? ['contractimpl'] : ['contractimpl(contracttrait)'],
|
|
12
|
+
section: 'Extensions',
|
|
13
|
+
};
|
|
14
|
+
if (explicitImplementations) {
|
|
15
|
+
c.addUseClause('stellar_governance::votes', 'self', { alias: 'votes' });
|
|
16
|
+
c.addTraitForEachFunctions(votesTrait, functions);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
c.addTraitImplBlock(votesTrait);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
const functions = (0, define_functions_1.defineFunctions)({
|
|
23
|
+
get_votes: {
|
|
24
|
+
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }],
|
|
25
|
+
returns: 'u128',
|
|
26
|
+
code: ['votes::get_votes(e, &account)'],
|
|
27
|
+
},
|
|
28
|
+
get_votes_at_checkpoint: {
|
|
29
|
+
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }, { name: 'ledger', type: 'u32' }],
|
|
30
|
+
returns: 'u128',
|
|
31
|
+
code: ['votes::get_votes_at_checkpoint(e, &account, ledger)'],
|
|
32
|
+
},
|
|
33
|
+
get_total_supply: {
|
|
34
|
+
args: [(0, common_options_1.getSelfArg)()],
|
|
35
|
+
returns: 'u128',
|
|
36
|
+
code: ['votes::get_total_supply(e)'],
|
|
37
|
+
},
|
|
38
|
+
get_total_supply_at_checkpoint: {
|
|
39
|
+
args: [(0, common_options_1.getSelfArg)(), { name: 'ledger', type: 'u32' }],
|
|
40
|
+
returns: 'u128',
|
|
41
|
+
code: ['votes::get_total_supply_at_checkpoint(e, ledger)'],
|
|
42
|
+
},
|
|
43
|
+
get_delegate: {
|
|
44
|
+
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }],
|
|
45
|
+
returns: 'Option<Address>',
|
|
46
|
+
code: ['votes::get_delegate(e, &account)'],
|
|
47
|
+
},
|
|
48
|
+
delegate: {
|
|
49
|
+
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }, { name: 'delegatee', type: 'Address' }],
|
|
50
|
+
code: ['votes::delegate(e, &account, &delegatee);'],
|
|
51
|
+
},
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=add-votes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-votes.js","sourceRoot":"","sources":["../src/add-votes.ts"],"names":[],"mappings":";;AAIA,4BAgBC;AApBD,qDAA8C;AAE9C,+DAA2D;AAE3D,SAAgB,QAAQ,CAAC,CAAkB,EAAE,uBAAgC;IAC3E,CAAC,CAAC,YAAY,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;IAErD,MAAM,UAAU,GAAG;QACjB,SAAS,EAAE,OAAO;QAClB,UAAU,EAAE,CAAC,CAAC,IAAI;QAClB,IAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC;QAClF,OAAO,EAAE,YAAY;KACtB,CAAC;IAEF,IAAI,uBAAuB,EAAE,CAAC;QAC5B,CAAC,CAAC,YAAY,CAAC,2BAA2B,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACxE,CAAC,CAAC,wBAAwB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,CAAC,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAClC,CAAC;AACH,CAAC;AAED,MAAM,SAAS,GAAG,IAAA,kCAAe,EAAC;IAChC,SAAS,EAAE;QACT,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1D,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,+BAA+B,CAAC;KACxC;IACD,uBAAuB,EAAE;QACvB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC3F,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,qDAAqD,CAAC;KAC9D;IACD,gBAAgB,EAAE;QAChB,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,CAAC;QACpB,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,4BAA4B,CAAC;KACrC;IACD,8BAA8B,EAAE;QAC9B,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACrD,OAAO,EAAE,MAAM;QACf,IAAI,EAAE,CAAC,kDAAkD,CAAC;KAC3D;IACD,YAAY,EAAE;QACZ,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC1D,OAAO,EAAE,iBAAiB;QAC1B,IAAI,EAAE,CAAC,kCAAkC,CAAC;KAC3C;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,CAAC,IAAA,2BAAU,GAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAClG,IAAI,EAAE,CAAC,2CAA2C,CAAC;KACpD;CACF,CAAC,CAAC"}
|
package/dist/fungible.d.ts
CHANGED
|
@@ -8,23 +8,34 @@ export interface FungibleOptions extends CommonContractOptions {
|
|
|
8
8
|
decimals?: string;
|
|
9
9
|
burnable?: boolean;
|
|
10
10
|
votes?: boolean;
|
|
11
|
+
totalSupply?: boolean;
|
|
12
|
+
cap?: string;
|
|
11
13
|
pausable?: boolean;
|
|
12
14
|
upgradeable?: boolean;
|
|
13
15
|
premint?: string;
|
|
14
16
|
mintable?: boolean;
|
|
15
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* Contract type restricting which accounts can use the token, selected by the Stablecoin limitations.
|
|
20
|
+
*/
|
|
21
|
+
export type TransferPolicy = 'AllowList' | 'BlockList';
|
|
16
22
|
export declare function withDefaults(opts: FungibleOptions): Required<FungibleOptions>;
|
|
17
23
|
export declare function isAccessControlRequired(opts: Partial<FungibleOptions>): boolean;
|
|
18
24
|
export declare function buildFungible(opts: FungibleOptions): ContractBuilder;
|
|
25
|
+
/**
|
|
26
|
+
* Builds a Fungible contract whose contract type also includes the given transfer policy.
|
|
27
|
+
*/
|
|
28
|
+
export declare function buildFungibleWithTransferPolicy(opts: FungibleOptions, transferPolicy?: TransferPolicy): ContractBuilder;
|
|
19
29
|
export declare const premintPattern: RegExp;
|
|
20
30
|
/**
|
|
21
31
|
* Calculates the initial supply that would be used in a Fungible contract based on a given premint amount and number of decimals.
|
|
22
32
|
*
|
|
23
33
|
* @param premint Premint amount in token units, may be fractional
|
|
24
34
|
* @param decimals The number of decimals in the token
|
|
35
|
+
* @param field The option reported in errors
|
|
25
36
|
* @returns `premint` with zeros padded or removed based on `decimals`.
|
|
26
37
|
* @throws OptionsError if `premint` has more than one decimal character or is more precise than allowed by the `decimals` argument.
|
|
27
38
|
*/
|
|
28
|
-
export declare function getInitialSupply(premint: string, decimals: number): string;
|
|
29
|
-
export declare const functions: Record<"symbol" | "name" | "decimals" | "
|
|
39
|
+
export declare function getInitialSupply(premint: string, decimals: number, field?: string): string;
|
|
40
|
+
export declare const functions: Record<"symbol" | "name" | "decimals" | "cap" | "balance" | "allowance" | "transfer" | "transfer_from" | "approve" | "total_supply" | "burn" | "burn_from" | "mint" | "mint_with_caller", import("./contract").BaseFunction>;
|
|
30
41
|
//# sourceMappingURL=fungible.d.ts.map
|
package/dist/fungible.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fungible.d.ts","sourceRoot":"","sources":["../src/fungible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"fungible.d.ts","sourceRoot":"","sources":["../src/fungible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAO7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAa9D,eAAO,MAAM,QAAQ,EAAE,QAAQ,CAAC,eAAe,CAerC,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,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,WAAW,CAAC;AAEvD,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC,CAc7E;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,OAAO,CAE/E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAEpE;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,eAAe,EACrB,cAAc,CAAC,EAAE,cAAc,GAC9B,eAAe,CA8EjB;AAyLD,eAAO,MAAM,cAAc,QAAoB,CAAC;AA0BhD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,SAAY,GAAG,MAAM,CA+B7F;AAED,eAAO,MAAM,SAAS,8NAgGpB,CAAC"}
|
package/dist/fungible.js
CHANGED
|
@@ -5,11 +5,13 @@ exports.printFungible = printFungible;
|
|
|
5
5
|
exports.withDefaults = withDefaults;
|
|
6
6
|
exports.isAccessControlRequired = isAccessControlRequired;
|
|
7
7
|
exports.buildFungible = buildFungible;
|
|
8
|
+
exports.buildFungibleWithTransferPolicy = buildFungibleWithTransferPolicy;
|
|
8
9
|
exports.getInitialSupply = getInitialSupply;
|
|
9
10
|
const contract_1 = require("./contract");
|
|
10
11
|
const set_access_control_1 = require("./set-access-control");
|
|
11
12
|
const add_pausable_1 = require("./add-pausable");
|
|
12
13
|
const add_upgradeable_1 = require("./add-upgradeable");
|
|
14
|
+
const add_votes_1 = require("./add-votes");
|
|
13
15
|
const define_functions_1 = require("./utils/define-functions");
|
|
14
16
|
const common_options_1 = require("./common-options");
|
|
15
17
|
const set_info_1 = require("./set-info");
|
|
@@ -17,14 +19,18 @@ const error_1 = require("./error");
|
|
|
17
19
|
const common_options_2 = require("./common-options");
|
|
18
20
|
const print_1 = require("./print");
|
|
19
21
|
const convert_strings_1 = require("./utils/convert-strings");
|
|
22
|
+
const compose_1 = require("./utils/compose");
|
|
20
23
|
const wizard_common_1 = require("@openzeppelin/wizard-common");
|
|
21
24
|
const DEFAULT_DECIMALS = 7;
|
|
25
|
+
const I128_MAX = (1n << 127n) - 1n;
|
|
22
26
|
exports.defaults = {
|
|
23
27
|
name: 'MyToken',
|
|
24
28
|
symbol: 'MTK',
|
|
25
29
|
decimals: DEFAULT_DECIMALS.toString(),
|
|
26
30
|
burnable: false,
|
|
27
31
|
votes: false,
|
|
32
|
+
totalSupply: false,
|
|
33
|
+
cap: '',
|
|
28
34
|
pausable: false,
|
|
29
35
|
upgradeable: false,
|
|
30
36
|
premint: '0',
|
|
@@ -43,6 +49,8 @@ function withDefaults(opts) {
|
|
|
43
49
|
decimals: opts.decimals ?? exports.defaults.decimals,
|
|
44
50
|
burnable: opts.burnable ?? exports.defaults.burnable,
|
|
45
51
|
votes: opts.votes ?? exports.defaults.votes,
|
|
52
|
+
totalSupply: opts.totalSupply ?? exports.defaults.totalSupply,
|
|
53
|
+
cap: opts.cap ?? exports.defaults.cap,
|
|
46
54
|
pausable: opts.pausable ?? exports.defaults.pausable,
|
|
47
55
|
upgradeable: opts.upgradeable ?? exports.defaults.upgradeable,
|
|
48
56
|
premint: opts.premint || exports.defaults.premint,
|
|
@@ -53,12 +61,48 @@ function isAccessControlRequired(opts) {
|
|
|
53
61
|
return opts.mintable === true || opts.pausable === true || opts.upgradeable === true;
|
|
54
62
|
}
|
|
55
63
|
function buildFungible(opts) {
|
|
64
|
+
return buildFungibleWithTransferPolicy(opts);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Builds a Fungible contract whose contract type also includes the given transfer policy.
|
|
68
|
+
*/
|
|
69
|
+
function buildFungibleWithTransferPolicy(opts, transferPolicy) {
|
|
56
70
|
const c = new contract_1.ContractBuilder(opts.name);
|
|
57
71
|
const allOpts = withDefaults(opts);
|
|
58
72
|
const decimals = (0, convert_strings_1.toUint)(allOpts.decimals, 'decimals', 'u32');
|
|
59
|
-
|
|
73
|
+
const capped = allOpts.cap !== '';
|
|
74
|
+
// The cap is checked against the total supply, so it requires the supply to be tracked.
|
|
75
|
+
const totalSupply = allOpts.totalSupply || capped;
|
|
76
|
+
if (allOpts.votes && capped) {
|
|
77
|
+
throw new error_1.OptionsError({
|
|
78
|
+
votes: 'Votes extension cannot be used with a cap',
|
|
79
|
+
cap: 'Cap cannot be used with Votes extension',
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (allOpts.votes && totalSupply) {
|
|
83
|
+
throw new error_1.OptionsError({
|
|
84
|
+
votes: 'Votes extension cannot be used with Total Supply extension',
|
|
85
|
+
totalSupply: 'Total Supply extension cannot be used with Votes extension',
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
// Order follows the library's documentation, e.g. `Compose<(AllowList, Capped, TotalSupply)>`.
|
|
89
|
+
const contractTypes = [
|
|
90
|
+
...(transferPolicy ? [transferPolicy] : []),
|
|
91
|
+
...(allOpts.votes ? ['FungibleVotes'] : []),
|
|
92
|
+
...(capped ? ['Capped'] : []),
|
|
93
|
+
...(totalSupply ? ['TotalSupply'] : []),
|
|
94
|
+
];
|
|
95
|
+
addBase(c, (0, convert_strings_1.toByteArray)(allOpts.name), (0, convert_strings_1.toByteArray)(allOpts.symbol), decimals, contractTypes, allOpts.pausable, allOpts.explicitImplementations);
|
|
96
|
+
if (allOpts.votes) {
|
|
97
|
+
(0, add_votes_1.addVotes)(c, allOpts.explicitImplementations);
|
|
98
|
+
}
|
|
99
|
+
if (totalSupply) {
|
|
100
|
+
addTotalSupply(c, allOpts.explicitImplementations);
|
|
101
|
+
}
|
|
102
|
+
// The cap has to be set before the premint, which is checked against it.
|
|
103
|
+
const capAbsolute = capped ? addCap(c, allOpts.cap, decimals, allOpts.explicitImplementations) : undefined;
|
|
60
104
|
if (allOpts.premint) {
|
|
61
|
-
addPremint(c, allOpts.premint, decimals,
|
|
105
|
+
addPremint(c, allOpts.premint, decimals, capAbsolute);
|
|
62
106
|
}
|
|
63
107
|
if (allOpts.pausable) {
|
|
64
108
|
(0, add_pausable_1.addPausable)(c, allOpts.access, allOpts.explicitImplementations);
|
|
@@ -67,24 +111,23 @@ function buildFungible(opts) {
|
|
|
67
111
|
(0, add_upgradeable_1.addUpgradeable)(c, allOpts.access, allOpts.explicitImplementations);
|
|
68
112
|
}
|
|
69
113
|
if (allOpts.burnable) {
|
|
70
|
-
addBurnable(c, allOpts.
|
|
114
|
+
addBurnable(c, allOpts.pausable, allOpts.explicitImplementations);
|
|
71
115
|
}
|
|
72
116
|
if (allOpts.mintable) {
|
|
73
|
-
addMintable(c, allOpts.access, allOpts.
|
|
117
|
+
addMintable(c, allOpts.access, allOpts.pausable, allOpts.explicitImplementations);
|
|
74
118
|
}
|
|
75
119
|
(0, set_access_control_1.setAccessControl)(c, allOpts.access, allOpts.explicitImplementations);
|
|
76
120
|
(0, set_info_1.setInfo)(c, allOpts.info);
|
|
77
121
|
return c;
|
|
78
122
|
}
|
|
79
|
-
function addBase(c, name, symbol, decimals,
|
|
123
|
+
function addBase(c, name, symbol, decimals, contractTypes, pausable, explicitImplementations) {
|
|
80
124
|
// Set metadata
|
|
81
125
|
c.addConstructorCode(`Base::set_metadata(e, ${decimals}, String::from_str(e, "${name}"), String::from_str(e, "${symbol}"));`);
|
|
82
126
|
// Set token functions
|
|
83
127
|
c.addUseClause('stellar_tokens::fungible', 'Base');
|
|
128
|
+
c.addUseClause('stellar_tokens::fungible', 'Compose');
|
|
84
129
|
c.addUseClause('stellar_tokens::fungible', 'FungibleToken');
|
|
85
|
-
if (
|
|
86
|
-
c.addUseClause('stellar_tokens::fungible', 'ContractOverrides');
|
|
87
|
-
c.addUseClause('stellar_governance::votes', 'Votes');
|
|
130
|
+
if (contractTypes.includes('FungibleVotes')) {
|
|
88
131
|
c.addUseClause('stellar_tokens::fungible', 'votes::FungibleVotes');
|
|
89
132
|
}
|
|
90
133
|
c.addUseClause('soroban_sdk', 'contract');
|
|
@@ -99,7 +142,7 @@ function addBase(c, name, symbol, decimals, votes, pausable, explicitImplementat
|
|
|
99
142
|
traitName: 'FungibleToken',
|
|
100
143
|
structName: c.name,
|
|
101
144
|
tags: explicitImplementations ? ['contractimpl'] : ['contractimpl(contracttrait)'],
|
|
102
|
-
assocType:
|
|
145
|
+
assocType: (0, compose_1.printComposedContractType)(contractTypes.length > 0 ? contractTypes : ['Base']),
|
|
103
146
|
};
|
|
104
147
|
c.addTraitImplBlock(fungibleTokenTrait);
|
|
105
148
|
if (explicitImplementations)
|
|
@@ -111,38 +154,76 @@ function addBase(c, name, symbol, decimals, votes, pausable, explicitImplementat
|
|
|
111
154
|
c.addTraitFunction(fungibleTokenTrait, exports.functions.transfer_from);
|
|
112
155
|
c.addFunctionTag(exports.functions.transfer_from, 'when_not_paused', fungibleTokenTrait);
|
|
113
156
|
}
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
157
|
+
// `Base` implements every `FungibleToken` method inherently, while the other contract types provide
|
|
158
|
+
// some of them only through the `ContractOverrides` trait, which then has to be in scope. The
|
|
159
|
+
// supply-tracking contract types provide transfers through it as well.
|
|
160
|
+
const tracksSupply = contractTypes.includes('TotalSupply');
|
|
161
|
+
if ((explicitImplementations && contractTypes.length > 0) || (pausable && tracksSupply)) {
|
|
162
|
+
c.addUseClause('stellar_tokens::fungible', 'ContractOverrides');
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
function addTotalSupply(c, explicitImplementations) {
|
|
166
|
+
c.addUseClause('stellar_tokens::fungible', 'total_supply::{FungibleTotalSupply, TotalSupply}');
|
|
167
|
+
const fungibleTotalSupplyTrait = {
|
|
168
|
+
traitName: 'FungibleTotalSupply',
|
|
169
|
+
structName: c.name,
|
|
170
|
+
tags: explicitImplementations ? ['contractimpl'] : ['contractimpl(contracttrait)'],
|
|
171
|
+
section: 'Extensions',
|
|
172
|
+
};
|
|
173
|
+
if (explicitImplementations)
|
|
174
|
+
c.addTraitFunction(fungibleTotalSupplyTrait, exports.functions.total_supply);
|
|
175
|
+
else
|
|
176
|
+
c.addTraitImplBlock(fungibleTotalSupplyTrait);
|
|
177
|
+
}
|
|
178
|
+
function addCap(c, cap, decimals, explicitImplementations) {
|
|
179
|
+
if (!exports.premintPattern.test(cap)) {
|
|
180
|
+
throw new error_1.OptionsError({
|
|
181
|
+
cap: 'Not a valid number',
|
|
120
182
|
});
|
|
121
183
|
}
|
|
184
|
+
const capAbsolute = (0, convert_strings_1.toUint)(getInitialSupply(cap, Number(decimals), 'cap'), 'cap', 'u128');
|
|
185
|
+
// `Capped::set_cap` takes an `i128`.
|
|
186
|
+
validateI128(capAbsolute, 'cap');
|
|
187
|
+
if (capAbsolute === 0n) {
|
|
188
|
+
throw new error_1.OptionsError({
|
|
189
|
+
cap: 'Cap must be greater than 0',
|
|
190
|
+
});
|
|
191
|
+
}
|
|
192
|
+
c.addUseClause('stellar_tokens::fungible', 'capped::{Capped, FungibleCapped}');
|
|
193
|
+
c.addConstructorCode(`Capped::set_cap(e, ${capAbsolute});`);
|
|
194
|
+
const fungibleCappedTrait = {
|
|
195
|
+
traitName: 'FungibleCapped',
|
|
196
|
+
structName: c.name,
|
|
197
|
+
tags: explicitImplementations ? ['contractimpl'] : ['contractimpl(contracttrait)'],
|
|
198
|
+
section: 'Extensions',
|
|
199
|
+
};
|
|
200
|
+
if (explicitImplementations)
|
|
201
|
+
c.addTraitFunction(fungibleCappedTrait, exports.functions.cap);
|
|
202
|
+
else
|
|
203
|
+
c.addTraitImplBlock(fungibleCappedTrait);
|
|
204
|
+
return capAbsolute;
|
|
122
205
|
}
|
|
123
|
-
function addMintable(c, access,
|
|
124
|
-
const mintFn = votes ? votesFunctions.mint : exports.functions.mint;
|
|
125
|
-
const mintWithCallerFn = votes ? votesFunctions.mint_with_caller : exports.functions.mint_with_caller;
|
|
206
|
+
function addMintable(c, access, pausable, explicitImplementations) {
|
|
126
207
|
switch (access) {
|
|
127
208
|
case false:
|
|
128
209
|
break;
|
|
129
210
|
case 'ownable': {
|
|
130
|
-
c.addFreeFunction(
|
|
131
|
-
(0, set_access_control_1.requireAccessControl)(c, undefined,
|
|
211
|
+
c.addFreeFunction(exports.functions.mint);
|
|
212
|
+
(0, set_access_control_1.requireAccessControl)(c, undefined, exports.functions.mint, access, undefined, explicitImplementations);
|
|
132
213
|
if (pausable) {
|
|
133
|
-
c.addFunctionTag(
|
|
214
|
+
c.addFunctionTag(exports.functions.mint, 'when_not_paused');
|
|
134
215
|
}
|
|
135
216
|
break;
|
|
136
217
|
}
|
|
137
218
|
case 'roles': {
|
|
138
|
-
c.addFreeFunction(
|
|
139
|
-
(0, set_access_control_1.requireAccessControl)(c, undefined,
|
|
219
|
+
c.addFreeFunction(exports.functions.mint_with_caller);
|
|
220
|
+
(0, set_access_control_1.requireAccessControl)(c, undefined, exports.functions.mint_with_caller, access, {
|
|
140
221
|
useMacro: true,
|
|
141
222
|
caller: 'caller',
|
|
142
223
|
role: 'minter',
|
|
143
224
|
}, explicitImplementations);
|
|
144
225
|
if (pausable) {
|
|
145
|
-
c.addFunctionTag(
|
|
226
|
+
c.addFunctionTag(exports.functions.mint_with_caller, 'when_not_paused');
|
|
146
227
|
}
|
|
147
228
|
break;
|
|
148
229
|
}
|
|
@@ -152,7 +233,7 @@ function addMintable(c, access, votes, pausable, explicitImplementations) {
|
|
|
152
233
|
}
|
|
153
234
|
}
|
|
154
235
|
}
|
|
155
|
-
function addBurnable(c,
|
|
236
|
+
function addBurnable(c, pausable, explicitImplementations) {
|
|
156
237
|
c.addUseClause('stellar_tokens::fungible', 'burnable::FungibleBurnable');
|
|
157
238
|
const fungibleBurnableTrait = {
|
|
158
239
|
traitName: 'FungibleBurnable',
|
|
@@ -160,35 +241,47 @@ function addBurnable(c, votes, pausable, explicitImplementations) {
|
|
|
160
241
|
tags: explicitImplementations ? ['contractimpl'] : ['contractimpl(contracttrait)'],
|
|
161
242
|
section: 'Extensions',
|
|
162
243
|
};
|
|
163
|
-
|
|
164
|
-
const burnFromFn = votes ? votesFunctions.burn_from : exports.functions.burn_from;
|
|
165
|
-
if (pausable || votes || explicitImplementations) {
|
|
244
|
+
if (pausable || explicitImplementations) {
|
|
166
245
|
if (pausable) {
|
|
167
246
|
c.addUseClause('stellar_macros', 'when_not_paused');
|
|
168
247
|
}
|
|
169
|
-
c.addTraitFunction(fungibleBurnableTrait,
|
|
170
|
-
c.addTraitFunction(fungibleBurnableTrait,
|
|
248
|
+
c.addTraitFunction(fungibleBurnableTrait, exports.functions.burn);
|
|
249
|
+
c.addTraitFunction(fungibleBurnableTrait, exports.functions.burn_from);
|
|
171
250
|
if (pausable) {
|
|
172
|
-
c.addFunctionTag(
|
|
173
|
-
c.addFunctionTag(
|
|
251
|
+
c.addFunctionTag(exports.functions.burn, 'when_not_paused', fungibleBurnableTrait);
|
|
252
|
+
c.addFunctionTag(exports.functions.burn_from, 'when_not_paused', fungibleBurnableTrait);
|
|
174
253
|
}
|
|
175
254
|
}
|
|
176
255
|
else {
|
|
177
256
|
c.addTraitImplBlock(fungibleBurnableTrait);
|
|
178
257
|
}
|
|
179
258
|
}
|
|
180
|
-
|
|
181
|
-
|
|
259
|
+
function validateI128(value, field) {
|
|
260
|
+
if (value > I128_MAX) {
|
|
261
|
+
throw new error_1.OptionsError({
|
|
262
|
+
[field]: 'Value is greater than i128 max value',
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
exports.premintPattern = /^\d*(?:\.\d*)?$/;
|
|
267
|
+
function addPremint(c, amount, decimals, capAbsolute) {
|
|
182
268
|
if (amount !== undefined && amount !== '0') {
|
|
183
269
|
if (!exports.premintPattern.test(amount)) {
|
|
184
270
|
throw new error_1.OptionsError({
|
|
185
271
|
premint: 'Not a valid number',
|
|
186
272
|
});
|
|
187
273
|
}
|
|
188
|
-
// TODO: handle signed int?
|
|
189
274
|
const premintAbsolute = (0, convert_strings_1.toUint)(getInitialSupply(amount, Number(decimals)), 'premint', 'u128');
|
|
275
|
+
// `mint` takes an `i128`.
|
|
276
|
+
validateI128(premintAbsolute, 'premint');
|
|
277
|
+
if (capAbsolute !== undefined && premintAbsolute > capAbsolute) {
|
|
278
|
+
throw new error_1.OptionsError({
|
|
279
|
+
premint: 'Premint exceeds the cap',
|
|
280
|
+
cap: 'Cap is lower than the premint',
|
|
281
|
+
});
|
|
282
|
+
}
|
|
190
283
|
c.addConstructorArgument({ name: 'recipient', type: 'Address' });
|
|
191
|
-
c.addConstructorCode(
|
|
284
|
+
c.addConstructorCode(`<Self as FungibleToken>::ContractType::mint(e, &recipient, ${premintAbsolute});`);
|
|
192
285
|
}
|
|
193
286
|
}
|
|
194
287
|
/**
|
|
@@ -196,15 +289,16 @@ function addPremint(c, amount, decimals, votes) {
|
|
|
196
289
|
*
|
|
197
290
|
* @param premint Premint amount in token units, may be fractional
|
|
198
291
|
* @param decimals The number of decimals in the token
|
|
292
|
+
* @param field The option reported in errors
|
|
199
293
|
* @returns `premint` with zeros padded or removed based on `decimals`.
|
|
200
294
|
* @throws OptionsError if `premint` has more than one decimal character or is more precise than allowed by the `decimals` argument.
|
|
201
295
|
*/
|
|
202
|
-
function getInitialSupply(premint, decimals) {
|
|
296
|
+
function getInitialSupply(premint, decimals, field = 'premint') {
|
|
203
297
|
let result;
|
|
204
298
|
const premintSegments = premint.split('.');
|
|
205
299
|
if (premintSegments.length > 2) {
|
|
206
300
|
throw new error_1.OptionsError({
|
|
207
|
-
|
|
301
|
+
[field]: 'Not a valid number',
|
|
208
302
|
});
|
|
209
303
|
}
|
|
210
304
|
else {
|
|
@@ -217,13 +311,13 @@ function getInitialSupply(premint, decimals) {
|
|
|
217
311
|
catch {
|
|
218
312
|
// .repeat gives an error if decimals number is too large
|
|
219
313
|
throw new error_1.OptionsError({
|
|
220
|
-
|
|
314
|
+
[field]: 'Decimals number too large',
|
|
221
315
|
});
|
|
222
316
|
}
|
|
223
317
|
}
|
|
224
318
|
else if (decimals < lastSegment.length) {
|
|
225
319
|
throw new error_1.OptionsError({
|
|
226
|
-
|
|
320
|
+
[field]: 'Too many decimals',
|
|
227
321
|
});
|
|
228
322
|
}
|
|
229
323
|
// concat segments without leading zeros
|
|
@@ -236,11 +330,6 @@ function getInitialSupply(premint, decimals) {
|
|
|
236
330
|
}
|
|
237
331
|
exports.functions = (0, define_functions_1.defineFunctions)({
|
|
238
332
|
// Token Functions
|
|
239
|
-
total_supply: {
|
|
240
|
-
args: [(0, common_options_1.getSelfArg)()],
|
|
241
|
-
returns: 'i128',
|
|
242
|
-
code: ['Self::ContractType::total_supply(e)'],
|
|
243
|
-
},
|
|
244
333
|
balance: {
|
|
245
334
|
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }],
|
|
246
335
|
returns: 'i128',
|
|
@@ -296,38 +385,19 @@ exports.functions = (0, define_functions_1.defineFunctions)({
|
|
|
296
385
|
code: ['Self::ContractType::symbol(e)'],
|
|
297
386
|
},
|
|
298
387
|
// Extensions
|
|
299
|
-
|
|
300
|
-
args: [(0, common_options_1.getSelfArg)()
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
burn_from: {
|
|
304
|
-
args: [
|
|
305
|
-
(0, common_options_1.getSelfArg)(),
|
|
306
|
-
{ name: 'spender', type: 'Address' },
|
|
307
|
-
{ name: 'from', type: 'Address' },
|
|
308
|
-
{ name: 'amount', type: 'i128' },
|
|
309
|
-
],
|
|
310
|
-
code: ['Base::burn_from(e, &spender, &from, amount)'],
|
|
311
|
-
},
|
|
312
|
-
mint: {
|
|
313
|
-
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }, { name: 'amount', type: 'i128' }],
|
|
314
|
-
code: ['Base::mint(e, &account, amount);'],
|
|
388
|
+
total_supply: {
|
|
389
|
+
args: [(0, common_options_1.getSelfArg)()],
|
|
390
|
+
returns: 'i128',
|
|
391
|
+
code: ['Self::ContractType::total_supply(e)'],
|
|
315
392
|
},
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
{ name: 'account', type: 'Address' },
|
|
321
|
-
{ name: 'amount', type: 'i128' },
|
|
322
|
-
{ name: 'caller', type: 'Address' },
|
|
323
|
-
],
|
|
324
|
-
code: ['Base::mint(e, &account, amount);'],
|
|
393
|
+
cap: {
|
|
394
|
+
args: [(0, common_options_1.getSelfArg)()],
|
|
395
|
+
returns: 'i128',
|
|
396
|
+
code: ['Capped::cap(e)'],
|
|
325
397
|
},
|
|
326
|
-
});
|
|
327
|
-
const votesFunctions = (0, define_functions_1.defineFunctions)({
|
|
328
398
|
burn: {
|
|
329
399
|
args: [(0, common_options_1.getSelfArg)(), { name: 'from', type: 'Address' }, { name: 'amount', type: 'i128' }],
|
|
330
|
-
code: ['
|
|
400
|
+
code: ['Self::ContractType::burn(e, &from, amount)'],
|
|
331
401
|
},
|
|
332
402
|
burn_from: {
|
|
333
403
|
args: [
|
|
@@ -336,11 +406,12 @@ const votesFunctions = (0, define_functions_1.defineFunctions)({
|
|
|
336
406
|
{ name: 'from', type: 'Address' },
|
|
337
407
|
{ name: 'amount', type: 'i128' },
|
|
338
408
|
],
|
|
339
|
-
code: ['
|
|
409
|
+
code: ['Self::ContractType::burn_from(e, &spender, &from, amount)'],
|
|
340
410
|
},
|
|
411
|
+
// Minting goes through the contract type, which keeps the total supply, the cap and the voting units up to date.
|
|
341
412
|
mint: {
|
|
342
413
|
args: [(0, common_options_1.getSelfArg)(), { name: 'account', type: 'Address' }, { name: 'amount', type: 'i128' }],
|
|
343
|
-
code: ['
|
|
414
|
+
code: ['<Self as FungibleToken>::ContractType::mint(e, &account, amount);'],
|
|
344
415
|
},
|
|
345
416
|
mint_with_caller: {
|
|
346
417
|
name: 'mint',
|
|
@@ -350,11 +421,10 @@ const votesFunctions = (0, define_functions_1.defineFunctions)({
|
|
|
350
421
|
{ name: 'amount', type: 'i128' },
|
|
351
422
|
{ name: 'caller', type: 'Address' },
|
|
352
423
|
],
|
|
353
|
-
code: ['
|
|
424
|
+
code: ['<Self as FungibleToken>::ContractType::mint(e, &account, amount);'],
|
|
354
425
|
},
|
|
355
426
|
});
|
|
356
427
|
const fungibleTokenTraitFunctions = (0, wizard_common_1.pickKeys)(exports.functions, [
|
|
357
|
-
'total_supply',
|
|
358
428
|
'balance',
|
|
359
429
|
'allowance',
|
|
360
430
|
'transfer',
|