@agoric/ertp 0.16.3-mainnet1B-dev-26244e8.0 → 0.16.3-orchestration-dev-096c4e8.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/package.json +26 -18
- package/src/amountMath.js +57 -63
- package/src/amountStore.js +32 -0
- package/src/index.js +7 -0
- package/src/issuerKit.js +218 -74
- package/src/legacy-payment-helpers.js +23 -28
- package/src/mathHelpers/copyBagMathHelpers.js +2 -4
- package/src/mathHelpers/copySetMathHelpers.js +1 -3
- package/src/mathHelpers/natMathHelpers.js +6 -7
- package/src/payment.js +5 -8
- package/src/paymentLedger.js +84 -91
- package/src/purse.js +83 -24
- package/src/typeGuards.js +37 -43
- package/src/types-ambient.js +237 -314
- package/src/types.js +237 -314
- package/CHANGELOG.md +0 -759
- package/src/amountMath.d.ts +0 -53
- package/src/amountMath.d.ts.map +0 -1
- package/src/displayInfo.d.ts +0 -2
- package/src/displayInfo.d.ts.map +0 -1
- package/src/index.d.ts +0 -4
- package/src/index.d.ts.map +0 -1
- package/src/issuerKit.d.ts +0 -19
- package/src/issuerKit.d.ts.map +0 -1
- package/src/legacy-payment-helpers.d.ts +0 -5
- package/src/legacy-payment-helpers.d.ts.map +0 -1
- package/src/mathHelpers/copyBagMathHelpers.d.ts +0 -5
- package/src/mathHelpers/copyBagMathHelpers.d.ts.map +0 -1
- package/src/mathHelpers/copySetMathHelpers.d.ts +0 -5
- package/src/mathHelpers/copySetMathHelpers.d.ts.map +0 -1
- package/src/mathHelpers/natMathHelpers.d.ts +0 -14
- package/src/mathHelpers/natMathHelpers.d.ts.map +0 -1
- package/src/mathHelpers/setMathHelpers.d.ts +0 -6
- package/src/mathHelpers/setMathHelpers.d.ts.map +0 -1
- package/src/payment.d.ts +0 -3
- package/src/payment.d.ts.map +0 -1
- package/src/paymentLedger.d.ts +0 -3
- package/src/paymentLedger.d.ts.map +0 -1
- package/src/purse.d.ts +0 -13
- package/src/purse.d.ts.map +0 -1
- package/src/transientNotifier.d.ts +0 -5
- package/src/transientNotifier.d.ts.map +0 -1
- package/src/typeGuards.d.ts +0 -42
- package/src/typeGuards.d.ts.map +0 -1
- package/src/types-ambient.d.ts +0 -376
- package/src/types-ambient.d.ts.map +0 -1
- package/src/types.d.ts +0 -376
- package/src/types.d.ts.map +0 -1
package/src/amountMath.d.ts
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
export function assertValueGetHelpers<V extends AmountValue>(value: V): MathHelpers<V>;
|
|
2
|
-
export namespace AmountMath {
|
|
3
|
-
export function make<K extends AssetKind>(brand: Brand<K>, allegedValue: AssetValueForKind<K>): Amount<K>;
|
|
4
|
-
export function coerce<K extends AssetKind>(brand: Brand<K>, allegedAmount: Amount<K>): Amount<K>;
|
|
5
|
-
export function getValue<K extends AssetKind>(brand: Brand<K>, amount: Amount<K>): AssetValueForKind<K>;
|
|
6
|
-
export const makeEmpty: {
|
|
7
|
-
(brand: Brand<AssetKind>): Amount<"nat">;
|
|
8
|
-
<K extends AssetKind>(brand: Brand<AssetKind>, assetKind: K): Amount<K>;
|
|
9
|
-
};
|
|
10
|
-
export function makeEmptyFromAmount<K extends AssetKind>(amount: Amount<K>): Amount<K>;
|
|
11
|
-
export function isEmpty(amount: Amount<AssetKind>, brand?: Brand<AssetKind> | undefined): boolean;
|
|
12
|
-
export { isGTE };
|
|
13
|
-
export function isEqual<K extends AssetKind>(leftAmount: Amount<K>, rightAmount: Amount<K>, brand?: Brand<K> | undefined): boolean;
|
|
14
|
-
export function add<K extends AssetKind>(leftAmount: Amount<K>, rightAmount: Amount<K>, brand?: Brand<K> | undefined): Amount<K>;
|
|
15
|
-
export function subtract<K extends AssetKind>(leftAmount: Amount<K>, rightAmount: Amount<K>, brand?: Brand<K> | undefined): Amount<K>;
|
|
16
|
-
export function min<K extends AssetKind>(x: Amount<K>, y: Amount<K>, brand?: Brand<K> | undefined): Amount<K>;
|
|
17
|
-
export function max<K extends AssetKind>(x: Amount<K>, y: Amount<K>, brand?: Brand<K> | undefined): Amount<K>;
|
|
18
|
-
}
|
|
19
|
-
/**
|
|
20
|
-
* Constants for the kinds of assets we support.
|
|
21
|
-
*
|
|
22
|
-
* @type {{ NAT: 'nat', SET: 'set', COPY_SET: 'copySet', COPY_BAG: 'copyBag' }}
|
|
23
|
-
*/
|
|
24
|
-
export const AssetKind: {
|
|
25
|
-
NAT: 'nat';
|
|
26
|
-
SET: 'set';
|
|
27
|
-
COPY_SET: 'copySet';
|
|
28
|
-
COPY_BAG: 'copyBag';
|
|
29
|
-
};
|
|
30
|
-
/**
|
|
31
|
-
* @param {Amount} amount
|
|
32
|
-
*/
|
|
33
|
-
export function getAssetKind(amount: Amount): AssetKindForValue<V>;
|
|
34
|
-
/**
|
|
35
|
-
* @param {AssetKind} allegedAK
|
|
36
|
-
*/
|
|
37
|
-
export function assertAssetKind(allegedAK: AssetKind): void;
|
|
38
|
-
/**
|
|
39
|
-
* Returns true if the leftAmount is greater than or equal to the
|
|
40
|
-
* rightAmount. The notion of "greater than or equal to" depends
|
|
41
|
-
* on the kind of amount, as defined by the MathHelpers. For example,
|
|
42
|
-
* whether rectangle A is greater than rectangle B depends on whether rectangle
|
|
43
|
-
* A includes rectangle B as defined by the logic in MathHelpers.
|
|
44
|
-
*
|
|
45
|
-
* @template {AssetKind} K
|
|
46
|
-
* @param {Amount<K>} leftAmount
|
|
47
|
-
* @param {Amount<K>} rightAmount
|
|
48
|
-
* @param {Brand<K>} [brand]
|
|
49
|
-
* @returns {boolean}
|
|
50
|
-
*/
|
|
51
|
-
declare function isGTE<K extends AssetKind>(leftAmount: Amount<K>, rightAmount: Amount<K>, brand?: Brand<K> | undefined): boolean;
|
|
52
|
-
export {};
|
|
53
|
-
//# sourceMappingURL=amountMath.d.ts.map
|
package/src/amountMath.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"amountMath.d.ts","sourceRoot":"","sources":["amountMath.js"],"names":[],"mappings":"AAuHO,uFAEkC;;IAyFjC,0GAKL;IAUO,kGAQP;IASS,wGAAyD;;;;;IAwB9C,uFAOpB;IAQQ,kGAOR;;IAYQ,mIAGR;IAcI,iIAIJ;IAeS,sIAIT;IAUI,8GAMqC;IAUrC,8GAMqC;;AA1W5C;;;;GAIG;AACH,wBAFU;IAAE,GAAG,EAAE,KAAK,CAAC;IAAC,GAAG,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,SAAS,CAAA;CAAE,CAO3E;AAoWH;;GAEG;AACH,qCAFW,MAAM,wBAOhB;AAzWD;;GAEG;AACH,2CAFW,SAAS,QAKnB;AAgJD;;;;;;;;;;;;GAYG;AACH,0HAFa,OAAO,CAKnB"}
|
package/src/displayInfo.d.ts
DELETED
package/src/displayInfo.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"displayInfo.d.ts","sourceRoot":"","sources":["displayInfo.js"],"names":[],"mappings":"AAYO,sDAJI,qBAAqB,aACrB,SAAS,GACP,WAAW,CAiBvB"}
|
package/src/index.d.ts
DELETED
package/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":""}
|
package/src/issuerKit.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
export function prepareIssuerKit<K extends AssetKind>(issuerBaggage: MapStore<string, unknown>, optShutdownWithFailure?: import("@agoric/swingset-vat").ShutdownWithFailure | undefined): IssuerKit<K>;
|
|
2
|
-
export function hasIssuer(baggage: MapStore<string, unknown>): any;
|
|
3
|
-
export function makeDurableIssuerKit<K extends AssetKind>(issuerBaggage: MapStore<string, unknown>, name: string, assetKind?: K | undefined, displayInfo?: AdditionalDisplayInfo | undefined, optShutdownWithFailure?: import("@agoric/swingset-vat").ShutdownWithFailure | undefined, { elementShape }?: Partial<{
|
|
4
|
-
elementShape: Pattern;
|
|
5
|
-
}> | undefined): IssuerKit<K>;
|
|
6
|
-
export function makeIssuerKit<K extends AssetKind = "nat">(name: string, assetKind?: K | undefined, displayInfo?: AdditionalDisplayInfo | undefined, optShutdownWithFailure?: import("@agoric/swingset-vat").ShutdownWithFailure | undefined, { elementShape }?: Partial<{
|
|
7
|
-
elementShape: Pattern;
|
|
8
|
-
}> | undefined): IssuerKit<K>;
|
|
9
|
-
export type Baggage = import('@agoric/vat-data').Baggage;
|
|
10
|
-
export type IssuerRecord<K extends AssetKind> = {
|
|
11
|
-
name: string;
|
|
12
|
-
assetKind: K;
|
|
13
|
-
displayInfo: AdditionalDisplayInfo;
|
|
14
|
-
elementShape: Pattern;
|
|
15
|
-
};
|
|
16
|
-
export type IssuerOptionsRecord = Partial<{
|
|
17
|
-
elementShape: Pattern;
|
|
18
|
-
}>;
|
|
19
|
-
//# sourceMappingURL=issuerKit.d.ts.map
|
package/src/issuerKit.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"issuerKit.d.ts","sourceRoot":"","sources":["issuerKit.js"],"names":[],"mappings":"AA2FO,uMAMN;AASM,mEAAsD;AAmCtD,0GAbI,MAAM;kBAnBmB,OAAO;8BA4C1C;AA+BM,iEAbI,MAAM;kBA9DmB,OAAO;8BA0FxC;sBA3LW,OAAO,kBAAkB,EAAE,OAAO;;UAKlC,MAAM;eACN,CAAC;iBACD,qBAAqB;kBACrB,OAAO;;kCAyFR,QAAQ;IAAC,YAAY,EAAE,OAAO,CAAA;CAAC,CAAC"}
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export function claim<K extends AssetKind>(recoveryPurse: ERef<Purse<K>>, srcPaymentP: ERef<Payment<K>>, optAmountShape?: Pattern): Promise<Payment<K>>;
|
|
2
|
-
export function combine<K extends AssetKind>(recoveryPurse: ERef<Purse<K>>, srcPaymentsPs: ERef<Payment<K>>[], optTotalAmount?: Pattern): Promise<Payment<K>>;
|
|
3
|
-
export function split<K extends AssetKind>(recoveryPurse: ERef<Purse<K>>, srcPaymentP: ERef<Payment<K>>, paymentAmountA: Amount<K>): Promise<Payment<K>[]>;
|
|
4
|
-
export function splitMany<K extends AssetKind>(recoveryPurse: ERef<Purse<K>>, srcPaymentP: ERef<Payment<K>>, amounts: Amount<K>[]): Promise<Payment[]>;
|
|
5
|
-
//# sourceMappingURL=legacy-payment-helpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"legacy-payment-helpers.d.ts","sourceRoot":"","sources":["legacy-payment-helpers.js"],"names":[],"mappings":"AA+BO,0HAHI,OAAO,uBAYjB;AAiBM,gIAHI,OAAO,uBA2BjB;AAiBM,2JAUN;AAkBM,oIAFM,QAAQ,OAAO,EAAE,CAAC,CAoB9B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copyBagMathHelpers.d.ts","sourceRoot":"","sources":["copyBagMathHelpers.js"],"names":[],"mappings":"AAiBA;;GAEG;AACH,iCAFU,YAAY,OAAO,CAAC,CAa3B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"copySetMathHelpers.d.ts","sourceRoot":"","sources":["copySetMathHelpers.js"],"names":[],"mappings":"AAiBA;;GAEG;AACH,iCAFU,YAAY,OAAO,CAAC,CAa3B"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Fungible digital assets use the natMathHelpers to manage balances -
|
|
3
|
-
* the operations are merely arithmetic on natural, non-negative
|
|
4
|
-
* numbers.
|
|
5
|
-
*
|
|
6
|
-
* Natural numbers are used for fungible erights such as money because
|
|
7
|
-
* rounding issues make floats problematic. All operations should be
|
|
8
|
-
* done with the smallest whole unit such that the `natMathHelpers` never
|
|
9
|
-
* deals with fractional parts.
|
|
10
|
-
*
|
|
11
|
-
* @type {MathHelpers<NatValue>}
|
|
12
|
-
*/
|
|
13
|
-
export const natMathHelpers: MathHelpers<NatValue>;
|
|
14
|
-
//# sourceMappingURL=natMathHelpers.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"natMathHelpers.d.ts","sourceRoot":"","sources":["natMathHelpers.js"],"names":[],"mappings":"AASA;;;;;;;;;;;GAWG;AACH,6BAFU,YAAY,QAAQ,CAAC,CAgB5B"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"setMathHelpers.d.ts","sourceRoot":"","sources":["setMathHelpers.js"],"names":[],"mappings":"AAkBA;;;GAGG;AACH,6BAFU,qBAAqB,CAkB5B"}
|
package/src/payment.d.ts
DELETED
package/src/payment.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"payment.d.ts","sourceRoot":"","sources":["payment.js"],"names":[],"mappings":"AAeO,wGALI,MAAM,6BAEN,cAAc,oBAgBxB;sBAvBa,OAAO,kBAAkB,EAAE,OAAO"}
|
package/src/paymentLedger.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
export function preparePaymentLedger<K extends AssetKind>(issuerBaggage: MapStore<string, unknown>, name: string, assetKind: K, displayInfo: DisplayInfo<K>, elementShape: Pattern, optShutdownWithFailure?: import("@agoric/swingset-vat").ShutdownWithFailure | undefined): PaymentLedger<K>;
|
|
2
|
-
export type Baggage = import('@agoric/vat-data').Baggage;
|
|
3
|
-
//# sourceMappingURL=paymentLedger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paymentLedger.d.ts","sourceRoot":"","sources":["paymentLedger.js"],"names":[],"mappings":"AAoFO,0GAPI,MAAM,2DAGN,OAAO,6GA+UjB;sBA9Ya,OAAO,kBAAkB,EAAE,OAAO"}
|
package/src/purse.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function preparePurseKind(issuerBaggage: any, name: any, assetKind: any, brand: any, PurseIKit: any, purseMethods: any): () => {
|
|
2
|
-
deposit(srcPayment: any, optAmountShape?: undefined): any;
|
|
3
|
-
withdraw(amount: any): any;
|
|
4
|
-
getCurrentAmount(): Amount<any>;
|
|
5
|
-
getCurrentAmountNotifier(): Notifier<any>;
|
|
6
|
-
getAllegedBrand(): any;
|
|
7
|
-
getDepositFacet(): {
|
|
8
|
-
receive(...args: any[]): any;
|
|
9
|
-
};
|
|
10
|
-
getRecoverySet(): CopySet<Payment<AssetKind>>;
|
|
11
|
-
recoverAll(): Amount<any>;
|
|
12
|
-
};
|
|
13
|
-
//# sourceMappingURL=purse.d.ts.map
|
package/src/purse.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"purse.d.ts","sourceRoot":"","sources":["purse.js"],"names":[],"mappings":"AAOO;;;;;;;;;;;EAkHN"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"transientNotifier.d.ts","sourceRoot":"","sources":["transientNotifier.js"],"names":[],"mappings":"AAQO;;;EAoBN"}
|
package/src/typeGuards.d.ts
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export const BrandShape: import("@endo/patterns").Matcher;
|
|
2
|
-
export const IssuerShape: import("@endo/patterns").Matcher;
|
|
3
|
-
export const PaymentShape: import("@endo/patterns").Matcher;
|
|
4
|
-
export const PurseShape: import("@endo/patterns").Matcher;
|
|
5
|
-
export const DepositFacetShape: import("@endo/patterns").Matcher;
|
|
6
|
-
export const NotifierShape: import("@endo/patterns").Matcher;
|
|
7
|
-
export const MintShape: import("@endo/patterns").Matcher;
|
|
8
|
-
export namespace AmountShape {
|
|
9
|
-
export { BrandShape as brand };
|
|
10
|
-
export { AmountValueShape as value };
|
|
11
|
-
}
|
|
12
|
-
export namespace RatioShape {
|
|
13
|
-
export { AmountShape as numerator };
|
|
14
|
-
export { AmountShape as denominator };
|
|
15
|
-
}
|
|
16
|
-
export function isNatValue(value: AmountValue): value is bigint;
|
|
17
|
-
export function isCopySetValue(value: AmountValue): value is CopySet<any>;
|
|
18
|
-
export function isSetValue(value: AmountValue): value is SetValue;
|
|
19
|
-
export function isCopyBagValue(value: AmountValue): value is CopyBag<any>;
|
|
20
|
-
export const MAX_ABSOLUTE_DECIMAL_PLACES: 100;
|
|
21
|
-
export const AssetKindShape: import("@endo/patterns").Matcher;
|
|
22
|
-
export const DisplayInfoShape: import("@endo/patterns").Matcher;
|
|
23
|
-
export namespace IssuerKitShape {
|
|
24
|
-
export { BrandShape as brand };
|
|
25
|
-
export { MintShape as mint };
|
|
26
|
-
export { PurseShape as mintRecoveryPurse };
|
|
27
|
-
export { IssuerShape as issuer };
|
|
28
|
-
export { DisplayInfoShape as displayInfo };
|
|
29
|
-
}
|
|
30
|
-
export const BrandI: import("@endo/patterns").InterfaceGuard;
|
|
31
|
-
export function makeIssuerInterfaces(brandShape?: Pattern, assetKindShape?: Pattern, amountShape?: Pattern): {
|
|
32
|
-
IssuerI: import("@endo/patterns").InterfaceGuard;
|
|
33
|
-
MintI: import("@endo/patterns").InterfaceGuard;
|
|
34
|
-
PaymentI: import("@endo/patterns").InterfaceGuard;
|
|
35
|
-
PurseIKit: {
|
|
36
|
-
purse: import("@endo/patterns").InterfaceGuard;
|
|
37
|
-
depositFacet: import("@endo/patterns").InterfaceGuard;
|
|
38
|
-
};
|
|
39
|
-
};
|
|
40
|
-
declare const AmountValueShape: import("@endo/patterns").Matcher;
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=typeGuards.d.ts.map
|
package/src/typeGuards.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"typeGuards.d.ts","sourceRoot":"","sources":["typeGuards.js"],"names":[],"mappings":"AAIA,0DAA+C;AAC/C,2DAAiD;AACjD,4DAAmD;AACnD,0DAA+C;AAC/C,iEAA6D;AAC7D,6DAAqD;AACrD,yDAA6C;;;;;;;;;AAqFtC,kCAHI,WAAW,mBAG0C;AASzD,sCAHI,WAAW,yBAGkD;AAYjE,kCAHI,WAAW,qBAG0C;AASzD,sCAHI,WAAW,yBAGkD;AAIxE,8CAA+C;AAE/C,8DAAuE;AAEvE,gEAaE;;;;;;;;AAYF,6DAKG;AAOI,kDAJI,OAAO,mBACP,OAAO,gBACP,OAAO;;;;;;;;EAkEjB;AAlKD,iEAKE"}
|
package/src/types-ambient.d.ts
DELETED
|
@@ -1,376 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Amounts are descriptions of digital assets, answering the questions
|
|
3
|
-
* "how much" and "of what kind". Amounts are values labeled with a brand.
|
|
4
|
-
* AmountMath executes the logic of how amounts are changed when digital
|
|
5
|
-
* assets are merged, separated, or otherwise manipulated. For
|
|
6
|
-
* example, a deposit of 2 bucks into a purse that already has 3 bucks
|
|
7
|
-
* gives a new purse balance of 5 bucks. An empty purse has 0 bucks. AmountMath
|
|
8
|
-
* relies heavily on polymorphic MathHelpers, which manipulate the unbranded
|
|
9
|
-
* portion.
|
|
10
|
-
*/
|
|
11
|
-
type Amount<K extends AssetKind = AssetKind> = {
|
|
12
|
-
brand: Brand<K>;
|
|
13
|
-
value: AssetValueForKind<K>;
|
|
14
|
-
};
|
|
15
|
-
/**
|
|
16
|
-
* An `AmountValue` describes a set or quantity of assets that can be owned or
|
|
17
|
-
* shared.
|
|
18
|
-
*
|
|
19
|
-
* A fungible `AmountValue` uses a non-negative bigint to represent a quantity
|
|
20
|
-
* of that many assets.
|
|
21
|
-
*
|
|
22
|
-
* A non-fungible `AmountValue` uses an array or CopySet of `Key`s to represent
|
|
23
|
-
* a set of whatever asset each key represents. A `Key` is a passable value
|
|
24
|
-
* that can be used as an element in a set (SetStore or CopySet) or as the
|
|
25
|
-
* key in a map (MapStore or CopyMap).
|
|
26
|
-
*
|
|
27
|
-
* `SetValue` is for the deprecated set representation, using an array directly
|
|
28
|
-
* to represent the array of its elements. `CopySet` is the proper
|
|
29
|
-
* representation using a CopySet.
|
|
30
|
-
*
|
|
31
|
-
* A semi-fungible `CopyBag` is represented as a
|
|
32
|
-
* `CopyBag` of `Key` objects. "Bag" is synonymous with MultiSet, where an
|
|
33
|
-
* element of a bag can be present once or more times, i.e., some positive
|
|
34
|
-
* bigint number of times, representing that quantity of the asset represented
|
|
35
|
-
* by that key.
|
|
36
|
-
*/
|
|
37
|
-
type AmountValue = NatValue | any[] | CopySet | CopyBag;
|
|
38
|
-
/**
|
|
39
|
-
* See doc-comment for `AmountValue`.
|
|
40
|
-
*/
|
|
41
|
-
type AssetKind = 'nat' | 'set' | 'copySet' | 'copyBag';
|
|
42
|
-
type AssetValueForKind<K extends AssetKind> = K extends 'nat' ? NatValue : K extends 'set' ? any[] : K extends 'copySet' ? CopySet : K extends 'copyBag' ? CopyBag : never;
|
|
43
|
-
type AssetKindForValue<V extends AmountValue> = V extends NatValue ? 'nat' : V extends any[] ? 'set' : V extends CopySet ? 'copySet' : V extends CopyBag ? 'copyBag' : never;
|
|
44
|
-
type DisplayInfo<K extends AssetKind = AssetKind> = {
|
|
45
|
-
/**
|
|
46
|
-
* Tells the display software how
|
|
47
|
-
* many decimal places to move the decimal over to the left, or in
|
|
48
|
-
* other words, which position corresponds to whole numbers. We
|
|
49
|
-
* require fungible digital assets to be represented in integers, in
|
|
50
|
-
* the smallest unit (i.e. USD might be represented in mill, a
|
|
51
|
-
* thousandth of a dollar. In that case, `decimalPlaces` would be
|
|
52
|
-
* 3.) This property is optional, and for non-fungible digital
|
|
53
|
-
* assets, should not be specified. The decimalPlaces property
|
|
54
|
-
* should be used for *display purposes only*. Any other use is an
|
|
55
|
-
* anti-pattern.
|
|
56
|
-
*/
|
|
57
|
-
decimalPlaces?: number | undefined;
|
|
58
|
-
/**
|
|
59
|
-
* - the kind of asset, either
|
|
60
|
-
* AssetKind.NAT (fungible) or
|
|
61
|
-
* AssetKind.SET or AssetKind.COPY_SET (non-fungible)
|
|
62
|
-
*/
|
|
63
|
-
assetKind: K;
|
|
64
|
-
};
|
|
65
|
-
/**
|
|
66
|
-
* The brand identifies the kind of issuer, and has a function to get the
|
|
67
|
-
* alleged name for the kind of asset described. The alleged name (such
|
|
68
|
-
* as 'BTC' or 'moola') is provided by the maker of the issuer and should
|
|
69
|
-
* not be trusted as accurate.
|
|
70
|
-
*
|
|
71
|
-
* Every amount created by a particular AmountMath will share the same brand,
|
|
72
|
-
* but recipients cannot rely on the brand to verify that a purported amount
|
|
73
|
-
* represents the issuer they intended, since the same brand can be reused by
|
|
74
|
-
* a misbehaving issuer.
|
|
75
|
-
*/
|
|
76
|
-
type Brand<K extends AssetKind = AssetKind> = {
|
|
77
|
-
/**
|
|
78
|
-
* Should be used with `issuer.getBrand` to ensure an issuer and brand match.
|
|
79
|
-
*/
|
|
80
|
-
isMyIssuer: (allegedIssuer: ERef<Issuer>) => Promise<boolean>;
|
|
81
|
-
getAllegedName: () => string;
|
|
82
|
-
/**
|
|
83
|
-
* Give information to UI on how to display the amount.
|
|
84
|
-
*/
|
|
85
|
-
getDisplayInfo: () => DisplayInfo<K>;
|
|
86
|
-
getAmountShape: () => Pattern;
|
|
87
|
-
};
|
|
88
|
-
/**
|
|
89
|
-
* Return true if the payment continues to exist.
|
|
90
|
-
*
|
|
91
|
-
* If the payment is a promise, the operation will proceed upon
|
|
92
|
-
* resolution.
|
|
93
|
-
*/
|
|
94
|
-
type IssuerIsLive = (payment: ERef<Payment>) => Promise<boolean>;
|
|
95
|
-
/**
|
|
96
|
-
* Get the amount of digital assets in the payment. Because the
|
|
97
|
-
* payment is not trusted, we cannot call a method on it directly, and
|
|
98
|
-
* must use the issuer instead.
|
|
99
|
-
*
|
|
100
|
-
* If the payment is a promise, the operation will proceed upon
|
|
101
|
-
* resolution.
|
|
102
|
-
*/
|
|
103
|
-
type IssuerGetAmountOf<K extends AssetKind> = (payment: ERef<Payment>) => Promise<Amount<K>>;
|
|
104
|
-
/**
|
|
105
|
-
* Burn all of the digital assets in the
|
|
106
|
-
* payment. `optAmount` is optional. If `optAmount` is present, the
|
|
107
|
-
* code will insist that the amount of the digital assets in the
|
|
108
|
-
* payment is equal to `optAmount`, to prevent sending the wrong
|
|
109
|
-
* payment and other confusion.
|
|
110
|
-
*
|
|
111
|
-
* If the payment is a promise, the operation will proceed upon
|
|
112
|
-
* resolution.
|
|
113
|
-
*/
|
|
114
|
-
type IssuerBurn = (payment: ERef<Payment>, optAmountShape?: Pattern) => Promise<Amount>;
|
|
115
|
-
/**
|
|
116
|
-
* Transfer all digital assets from the payment to a new payment and
|
|
117
|
-
* delete the original. `optAmount` is optional. If `optAmount` is
|
|
118
|
-
* present, the code will insist that the amount of digital assets in
|
|
119
|
-
* the payment is equal to `optAmount`, to prevent sending the wrong
|
|
120
|
-
* payment and other confusion.
|
|
121
|
-
*
|
|
122
|
-
* If the payment is a promise, the operation will proceed upon
|
|
123
|
-
* resolution.
|
|
124
|
-
*/
|
|
125
|
-
type IssuerClaim<K extends AssetKind> = (payment: ERef<Payment<K>>, optAmountShape?: Pattern) => Promise<Payment<K>>;
|
|
126
|
-
/**
|
|
127
|
-
* Combine multiple payments into one payment.
|
|
128
|
-
*
|
|
129
|
-
* If any of the payments is a promise, the operation will proceed
|
|
130
|
-
* upon resolution.
|
|
131
|
-
*/
|
|
132
|
-
type IssuerCombine<K extends AssetKind> = (paymentsArray: ERef<Payment<K>>[], optTotalAmount?: Amount<K> | undefined) => Promise<Payment<K>>;
|
|
133
|
-
/**
|
|
134
|
-
* Split a single payment into two payments,
|
|
135
|
-
* A and B, according to the paymentAmountA passed in.
|
|
136
|
-
*
|
|
137
|
-
* If the payment is a promise, the operation will proceed upon
|
|
138
|
-
* resolution.
|
|
139
|
-
*/
|
|
140
|
-
type IssuerSplit<K extends AssetKind> = (payment: ERef<Payment<K>>, paymentAmountA: Amount<K>) => Promise<Payment<K>[]>;
|
|
141
|
-
/**
|
|
142
|
-
* Split a single payment into many payments, according to the amounts
|
|
143
|
-
* passed in.
|
|
144
|
-
*
|
|
145
|
-
* If the payment is a promise, the operation will proceed upon
|
|
146
|
-
* resolution.
|
|
147
|
-
*/
|
|
148
|
-
type IssuerSplitMany = (payment: ERef<Payment>, amounts: Amount[]) => Promise<Payment[]>;
|
|
149
|
-
/**
|
|
150
|
-
* The issuer cannot mint a new amount, but it can create empty purses
|
|
151
|
-
* and payments. The issuer can also transform payments (splitting
|
|
152
|
-
* payments, combining payments, burning payments, and claiming
|
|
153
|
-
* payments exclusively). The issuer should be gotten from a trusted
|
|
154
|
-
* source and then relied upon as the decider of whether an untrusted
|
|
155
|
-
* payment is valid.
|
|
156
|
-
*/
|
|
157
|
-
type Issuer<K extends AssetKind = AssetKind> = {
|
|
158
|
-
/**
|
|
159
|
-
* Get the Brand for this Issuer. The
|
|
160
|
-
* Brand indicates the type of digital asset and is shared by the
|
|
161
|
-
* mint, the issuer, and any purses and payments of this particular
|
|
162
|
-
* kind. The brand is not closely held, so this function should not be
|
|
163
|
-
* trusted to identify an issuer alone. Fake digital assets and amount
|
|
164
|
-
* can use another issuer's brand.
|
|
165
|
-
*/
|
|
166
|
-
getBrand: () => Brand<K>;
|
|
167
|
-
/**
|
|
168
|
-
* Get the allegedName for
|
|
169
|
-
* this mint/issuer
|
|
170
|
-
*/
|
|
171
|
-
getAllegedName: () => string;
|
|
172
|
-
/**
|
|
173
|
-
* Get the kind of
|
|
174
|
-
* MathHelpers used by this Issuer.
|
|
175
|
-
*/
|
|
176
|
-
getAssetKind: () => AssetKind;
|
|
177
|
-
/**
|
|
178
|
-
* Give information to UI
|
|
179
|
-
* on how to display amounts for this issuer.
|
|
180
|
-
*/
|
|
181
|
-
getDisplayInfo: () => DisplayInfo<K>;
|
|
182
|
-
/**
|
|
183
|
-
* Make an empty purse of this
|
|
184
|
-
* brand.
|
|
185
|
-
*/
|
|
186
|
-
makeEmptyPurse: () => Purse<K>;
|
|
187
|
-
isLive: IssuerIsLive;
|
|
188
|
-
getAmountOf: IssuerGetAmountOf<K>;
|
|
189
|
-
burn: IssuerBurn;
|
|
190
|
-
};
|
|
191
|
-
type PaymentLedger<K extends AssetKind = AssetKind> = {
|
|
192
|
-
mint: Mint<K>;
|
|
193
|
-
mintRecoveryPurse: Purse<K>;
|
|
194
|
-
issuer: Issuer<K>;
|
|
195
|
-
brand: Brand<K>;
|
|
196
|
-
};
|
|
197
|
-
type IssuerKit<K extends AssetKind = AssetKind> = {
|
|
198
|
-
mint: Mint<K>;
|
|
199
|
-
mintRecoveryPurse: Purse<K>;
|
|
200
|
-
issuer: Issuer<K>;
|
|
201
|
-
brand: Brand<K>;
|
|
202
|
-
displayInfo: DisplayInfo;
|
|
203
|
-
};
|
|
204
|
-
type AdditionalDisplayInfo = {
|
|
205
|
-
/**
|
|
206
|
-
* Tells the display software how
|
|
207
|
-
* many decimal places to move the decimal over to the left, or in
|
|
208
|
-
* other words, which position corresponds to whole numbers. We
|
|
209
|
-
* require fungible digital assets to be represented in integers, in
|
|
210
|
-
* the smallest unit (i.e. USD might be represented in mill, a
|
|
211
|
-
* thousandth of a dollar. In that case, `decimalPlaces` would be
|
|
212
|
-
* 3.) This property is optional, and for non-fungible digital
|
|
213
|
-
* assets, should not be specified. The decimalPlaces property
|
|
214
|
-
* should be used for *display purposes only*. Any other use is an
|
|
215
|
-
* anti-pattern.
|
|
216
|
-
*/
|
|
217
|
-
decimalPlaces?: number | undefined;
|
|
218
|
-
assetKind?: AssetKind | undefined;
|
|
219
|
-
};
|
|
220
|
-
type ShutdownWithFailure = import('@agoric/swingset-vat').ShutdownWithFailure;
|
|
221
|
-
/**
|
|
222
|
-
* Holding a Mint carries the right to issue new digital assets. These
|
|
223
|
-
* assets all have the same kind, which is called a Brand.
|
|
224
|
-
*/
|
|
225
|
-
type Mint<K extends AssetKind = AssetKind> = {
|
|
226
|
-
/**
|
|
227
|
-
* Gets the Issuer for this mint.
|
|
228
|
-
*/
|
|
229
|
-
getIssuer: () => Issuer<K>;
|
|
230
|
-
/**
|
|
231
|
-
* Creates a new Payment containing newly minted amount.
|
|
232
|
-
*/
|
|
233
|
-
mintPayment: (newAmount: Amount<K>) => Payment<K>;
|
|
234
|
-
};
|
|
235
|
-
type DepositFacetReceive = (payment: Payment, optAmountShape?: Pattern) => Amount;
|
|
236
|
-
type DepositFacet = {
|
|
237
|
-
/**
|
|
238
|
-
* Deposit all the contents of payment into the purse that made this facet,
|
|
239
|
-
* returning the amount. If the optional argument `optAmount` does not equal the
|
|
240
|
-
* amount of digital assets in the payment, throw an error.
|
|
241
|
-
*
|
|
242
|
-
* If payment is a promise, throw an error.
|
|
243
|
-
*/
|
|
244
|
-
receive: DepositFacetReceive;
|
|
245
|
-
};
|
|
246
|
-
type PurseDeposit<K extends AssetKind> = (payment: Payment<K>, optAmountShape?: Pattern) => Amount<K>;
|
|
247
|
-
/**
|
|
248
|
-
* Purses hold amount of digital assets of the same brand, but unlike Payments,
|
|
249
|
-
* they are not meant to be sent to others. To transfer digital assets, a
|
|
250
|
-
* Payment should be withdrawn from a Purse. The amount of digital
|
|
251
|
-
* assets in a purse can change through the action of deposit() and withdraw().
|
|
252
|
-
*
|
|
253
|
-
* The primary use for Purses and Payments is for currency-like and goods-like
|
|
254
|
-
* digital assets, but they can also be used to represent other kinds of rights,
|
|
255
|
-
* such as the right to participate in a particular contract.
|
|
256
|
-
*/
|
|
257
|
-
type Purse<K extends AssetKind = AssetKind> = {
|
|
258
|
-
/**
|
|
259
|
-
* Get the alleged Brand for this Purse
|
|
260
|
-
*/
|
|
261
|
-
getAllegedBrand: () => Brand<K>;
|
|
262
|
-
/**
|
|
263
|
-
* Get the amount contained in this purse.
|
|
264
|
-
*/
|
|
265
|
-
getCurrentAmount: () => Amount<K>;
|
|
266
|
-
/**
|
|
267
|
-
* Get a lossy notifier for changes to this purse's balance.
|
|
268
|
-
*/
|
|
269
|
-
getCurrentAmountNotifier: () => LatestTopic<Amount<K>>;
|
|
270
|
-
/**
|
|
271
|
-
* Deposit all the contents of payment into this purse, returning the
|
|
272
|
-
* amount. If the optional argument `optAmount` does not equal the
|
|
273
|
-
* amount of digital assets in the payment, throw an error.
|
|
274
|
-
*
|
|
275
|
-
* If payment is a promise, throw an error.
|
|
276
|
-
*/
|
|
277
|
-
deposit: PurseDeposit<K>;
|
|
278
|
-
/**
|
|
279
|
-
* Return an object whose `receive` method deposits to the current Purse.
|
|
280
|
-
*/
|
|
281
|
-
getDepositFacet: () => DepositFacet;
|
|
282
|
-
/**
|
|
283
|
-
* Withdraw amount from this purse into a new Payment.
|
|
284
|
-
*/
|
|
285
|
-
withdraw: (amount: Amount<K>) => Payment<K>;
|
|
286
|
-
/**
|
|
287
|
-
* The set of payments withdrawn from this purse that are still live. These
|
|
288
|
-
* are the payments that can still be recovered in emergencies by, for example,
|
|
289
|
-
* depositing into this purse. Such a deposit action is like canceling an
|
|
290
|
-
* outstanding check because you're tired of waiting for it. Once your
|
|
291
|
-
* cancellation is acknowledged, you can spend the assets at stake on other
|
|
292
|
-
* things. Afterwards, if the recipient of the original check finally gets
|
|
293
|
-
* around to depositing it, their deposit fails.
|
|
294
|
-
*/
|
|
295
|
-
getRecoverySet: () => CopySet<Payment<K>>;
|
|
296
|
-
/**
|
|
297
|
-
* For use in emergencies, such as coming back from a traumatic crash and
|
|
298
|
-
* upgrade. This deposits all the payments in this purse's recovery set
|
|
299
|
-
* into the purse itself, returning the total amount of assets recovered.
|
|
300
|
-
*/
|
|
301
|
-
recoverAll: () => Amount<K>;
|
|
302
|
-
};
|
|
303
|
-
/**
|
|
304
|
-
* Payments hold amount of digital assets of the same brand in transit. Payments
|
|
305
|
-
* can be deposited in purses, split into multiple payments, combined, and
|
|
306
|
-
* claimed (getting an exclusive payment). Payments are linear, meaning
|
|
307
|
-
* that either a payment has the same amount of digital assets it
|
|
308
|
-
* started with, or it is used up entirely. It is impossible to partially use a
|
|
309
|
-
* payment.
|
|
310
|
-
*
|
|
311
|
-
* Payments are often received from other actors and therefore should
|
|
312
|
-
* not be trusted themselves. To get the amount of digital assets in a payment,
|
|
313
|
-
* use the trusted issuer: issuer.getAmountOf(payment),
|
|
314
|
-
*
|
|
315
|
-
* Payments can be converted to Purses by getting a trusted issuer and
|
|
316
|
-
* calling `issuer.makeEmptyPurse()` to create a purse, then
|
|
317
|
-
* `purse.deposit(payment)`.
|
|
318
|
-
*/
|
|
319
|
-
type Payment<K extends AssetKind = AssetKind> = {
|
|
320
|
-
/**
|
|
321
|
-
* Get the allegedBrand, indicating the type of digital asset this
|
|
322
|
-
* payment purports to be, and which issuer to use. Because payments
|
|
323
|
-
* are not trusted, any method calls on payments should be treated
|
|
324
|
-
* with suspicion and verified elsewhere.
|
|
325
|
-
*/
|
|
326
|
-
getAllegedBrand: () => Brand<K>;
|
|
327
|
-
};
|
|
328
|
-
/**
|
|
329
|
-
* All of the difference in how digital asset amount are manipulated can be
|
|
330
|
-
* reduced to the behavior of the math on values. We extract this
|
|
331
|
-
* custom logic into mathHelpers. MathHelpers are about value
|
|
332
|
-
* arithmetic, whereas AmountMath is about amounts, which are the
|
|
333
|
-
* values labeled with a brand. AmountMath use mathHelpers to do their value
|
|
334
|
-
* arithmetic, and then brand the results, making a new amount.
|
|
335
|
-
*
|
|
336
|
-
* The MathHelpers are designed to be called only from AmountMath, and so
|
|
337
|
-
* all methods but coerce can assume their inputs are valid. They only
|
|
338
|
-
* need to do output validation, and only when there is a possibility of
|
|
339
|
-
* invalid output.
|
|
340
|
-
*/
|
|
341
|
-
type MathHelpers<V extends AmountValue> = {
|
|
342
|
-
/**
|
|
343
|
-
* Check the kind of this value and throw if it is not the
|
|
344
|
-
* expected kind.
|
|
345
|
-
*/
|
|
346
|
-
doCoerce: (allegedValue: V) => V;
|
|
347
|
-
/**
|
|
348
|
-
* Get the representation for the identity element (often 0 or an
|
|
349
|
-
* empty array)
|
|
350
|
-
*/
|
|
351
|
-
doMakeEmpty: () => V;
|
|
352
|
-
/**
|
|
353
|
-
* Is the value the identity element?
|
|
354
|
-
*/
|
|
355
|
-
doIsEmpty: (value: V) => boolean;
|
|
356
|
-
/**
|
|
357
|
-
* Is the left greater than or equal to the right?
|
|
358
|
-
*/
|
|
359
|
-
doIsGTE: (left: V, right: V) => boolean;
|
|
360
|
-
/**
|
|
361
|
-
* Does left equal right?
|
|
362
|
-
*/
|
|
363
|
-
doIsEqual: (left: V, right: V) => boolean;
|
|
364
|
-
/**
|
|
365
|
-
* Return the left combined with the right.
|
|
366
|
-
*/
|
|
367
|
-
doAdd: (left: V, right: V) => V;
|
|
368
|
-
/**
|
|
369
|
-
* Return what remains after removing the right from the left. If
|
|
370
|
-
* something in the right was not in the left, we throw an error.
|
|
371
|
-
*/
|
|
372
|
-
doSubtract: (left: V, right: V) => V;
|
|
373
|
-
};
|
|
374
|
-
type NatValue = bigint;
|
|
375
|
-
type SetValue = Array<Key>;
|
|
376
|
-
//# sourceMappingURL=types-ambient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types-ambient.d.ts","sourceRoot":"","sources":["types-ambient.js"],"names":[],"mappings":"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"}
|