@agoric/inter-protocol 0.17.0-u19.2 → 0.17.0-u21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (83) hide show
  1. package/package.json +33 -32
  2. package/src/auction/auctionBook.d.ts +2 -2
  3. package/src/auction/auctioneer.d.ts +5 -4
  4. package/src/auction/auctioneer.d.ts.map +1 -1
  5. package/src/auction/auctioneer.js +2 -0
  6. package/src/auction/offerBook.d.ts +3 -2
  7. package/src/auction/offerBook.d.ts.map +1 -1
  8. package/src/auction/offerBook.js +5 -1
  9. package/src/auction/params.d.ts +2 -1
  10. package/src/auction/params.d.ts.map +1 -1
  11. package/src/auction/params.js +1 -0
  12. package/src/auction/scheduler.d.ts +1 -1
  13. package/src/auction/util.d.ts +2 -1
  14. package/src/auction/util.d.ts.map +1 -1
  15. package/src/auction/util.js +4 -1
  16. package/src/clientSupport.d.ts +1 -0
  17. package/src/clientSupport.d.ts.map +1 -1
  18. package/src/clientSupport.js +6 -1
  19. package/src/contractSupport.d.ts +1 -1
  20. package/src/contractSupport.d.ts.map +1 -1
  21. package/src/econCommitteeCharter.d.ts +4 -4
  22. package/src/feeDistributor.d.ts +17 -17
  23. package/src/interest-math.js +1 -1
  24. package/src/interest.d.ts +3 -1
  25. package/src/interest.d.ts.map +1 -1
  26. package/src/interest.js +2 -5
  27. package/src/price/fluxAggregatorContract.d.ts +6 -6
  28. package/src/price/fluxAggregatorContract.d.ts.map +1 -1
  29. package/src/price/fluxAggregatorKit.d.ts +4 -4
  30. package/src/price/roundsManager.d.ts +1 -1
  31. package/src/proposals/addAssetToVault.js +1 -1
  32. package/src/proposals/econ-behaviors.js +17 -3
  33. package/src/proposals/upgrade-vaults.js +1 -2
  34. package/src/provisionPool.d.ts +17 -5
  35. package/src/provisionPool.d.ts.map +1 -1
  36. package/src/provisionPool.js +17 -11
  37. package/src/provisionPoolKit.d.ts +26 -11
  38. package/src/provisionPoolKit.d.ts.map +1 -1
  39. package/src/provisionPoolKit.js +111 -51
  40. package/src/psm/psm.d.ts +10 -6
  41. package/src/psm/psm.d.ts.map +1 -1
  42. package/src/psm/psm.js +1 -0
  43. package/src/reserve/assetReserve.d.ts +12 -2
  44. package/src/reserve/assetReserve.d.ts.map +1 -1
  45. package/src/reserve/assetReserve.js +4 -0
  46. package/src/reserve/assetReserveKit.d.ts +30 -2
  47. package/src/reserve/assetReserveKit.d.ts.map +1 -1
  48. package/src/reserve/assetReserveKit.js +108 -1
  49. package/src/reserve/params.d.ts +5 -1
  50. package/src/reserve/params.d.ts.map +1 -1
  51. package/src/reserve/params.js +4 -0
  52. package/src/vaultFactory/liquidation.d.ts +2 -0
  53. package/src/vaultFactory/liquidation.d.ts.map +1 -1
  54. package/src/vaultFactory/liquidation.js +5 -5
  55. package/src/vaultFactory/math.js +1 -1
  56. package/src/vaultFactory/orderedVaultStore.d.ts +19 -18
  57. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -1
  58. package/src/vaultFactory/orderedVaultStore.js +4 -2
  59. package/src/vaultFactory/params.d.ts +5 -2
  60. package/src/vaultFactory/params.d.ts.map +1 -1
  61. package/src/vaultFactory/params.js +5 -2
  62. package/src/vaultFactory/prioritizedVaults.d.ts +58 -57
  63. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -1
  64. package/src/vaultFactory/prioritizedVaults.js +5 -2
  65. package/src/vaultFactory/storeUtils.d.ts +2 -2
  66. package/src/vaultFactory/storeUtils.d.ts.map +1 -1
  67. package/src/vaultFactory/types-ambient.d.ts +2 -2
  68. package/src/vaultFactory/types-ambient.d.ts.map +1 -1
  69. package/src/vaultFactory/types-ambient.js +5 -2
  70. package/src/vaultFactory/vault.d.ts +9 -9
  71. package/src/vaultFactory/vaultDirector.d.ts +46 -44
  72. package/src/vaultFactory/vaultDirector.d.ts.map +1 -1
  73. package/src/vaultFactory/vaultDirector.js +2 -0
  74. package/src/vaultFactory/vaultFactory.d.ts +62 -15
  75. package/src/vaultFactory/vaultFactory.d.ts.map +1 -1
  76. package/src/vaultFactory/vaultFactory.js +6 -2
  77. package/src/vaultFactory/vaultHolder.d.ts +32 -32
  78. package/src/vaultFactory/vaultHolder.d.ts.map +1 -1
  79. package/src/vaultFactory/vaultHolder.js +4 -0
  80. package/src/vaultFactory/vaultKit.d.ts +6 -6
  81. package/src/vaultFactory/vaultManager.d.ts +61 -58
  82. package/src/vaultFactory/vaultManager.d.ts.map +1 -1
  83. package/src/vaultFactory/vaultManager.js +4 -2
@@ -16,13 +16,13 @@ export function prepareFluxAggregatorKit(baggage: Baggage, zcf: ZCF<ChainlinkCon
16
16
  *
17
17
  * @param {string} oracleId unique per contract instance
18
18
  */
19
- makeOracleInvitation(oracleId: string): Promise<Invitation<{
19
+ makeOracleInvitation(oracleId: string): Promise<globalThis.Invitation<{
20
20
  invitationMakers: {
21
21
  /** @param {import('./roundsManager.js').PriceRound} result */
22
- PushPrice(result: import("./roundsManager.js").PriceRound): Promise<Invitation<void, undefined>>;
23
- } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
22
+ PushPrice(result: import("./roundsManager.js").PriceRound): Promise<globalThis.Invitation<void, undefined>>;
23
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
24
24
  /** @param {import('./roundsManager.js').PriceRound} result */
25
- PushPrice(result: import("./roundsManager.js").PriceRound): Promise<Invitation<void, undefined>>;
25
+ PushPrice(result: import("./roundsManager.js").PriceRound): Promise<globalThis.Invitation<void, undefined>>;
26
26
  }>;
27
27
  oracle: import("@endo/exo").Guarded<{
28
28
  pushPrice({ roundId: roundIdRaw, unitPrice: valueRaw, }: PriceDatum): Promise<void>;
@@ -92,7 +92,7 @@ export function prepareRoundsManagerKit(baggage: any): (args_0: Readonly<import(
92
92
  }): ((priceQuery: any) => Promise<{
93
93
  quoteAmount: import("@agoric/ertp").SetAmount<PriceDescription>;
94
94
  quotePayment: globalThis.Payment<"set", PriceDescription>;
95
- }> | undefined) & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, (priceQuery: any) => Promise<{
95
+ }> | undefined) & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, (priceQuery: any) => Promise<{
96
96
  quoteAmount: import("@agoric/ertp").SetAmount<PriceDescription>;
97
97
  quotePayment: globalThis.Payment<"set", PriceDescription>;
98
98
  }> | undefined>;
@@ -7,7 +7,7 @@ import { Far } from '@endo/marshal';
7
7
  import { AmountMath, AssetKind } from '@agoric/ertp';
8
8
  import { deeplyFulfilledObject } from '@agoric/internal';
9
9
  import { makeRatio } from '@agoric/zoe/src/contractSupport/index.js';
10
- import { parseRatio } from '@agoric/zoe/src/contractSupport/ratio.js';
10
+ import { parseRatio } from '@agoric/ertp/src/ratio.js';
11
11
  import { E } from '@endo/far';
12
12
  import { Stable } from '@agoric/internal/src/tokens.js';
13
13
  import { TimeMath } from '@agoric/time/src/timeMath.js';
@@ -10,7 +10,19 @@ import { makeGovernedTerms as makeGovernedATerms } from '../auction/params.js';
10
10
  import { makeReserveTerms } from '../reserve/params.js';
11
11
  import { makeGovernedTerms as makeGovernedVFTerms } from '../vaultFactory/params.js';
12
12
 
13
- /** @import {StartedInstanceKit} from '@agoric/zoe/src/zoeService/utils.js' */
13
+ /**
14
+ * @import {GovernorCreatorFacet, GovernanceFacetKit, GovernorStartedInstallationKit} from '@agoric/governance/src/types.js';
15
+ * @import {StartedInstanceKit} from '@agoric/zoe/src/zoeService/utils.js';
16
+ * @import {AdminFacet} from '@agoric/zoe';
17
+ */
18
+
19
+ // Duplicated from vaultFactory/types-ambient.js to solve a CI problem.
20
+ // Not worth refactoring to DRY because vaultFactory is going away.
21
+ /**
22
+ * @typedef {object} InterestTiming
23
+ * @property {import('@agoric/time').RelativeTime} chargingPeriod in seconds
24
+ * @property {import('@agoric/time').RelativeTime} recordingPeriod in seconds
25
+ */
14
26
 
15
27
  const trace = makeTracer('RunEconBehaviors', true);
16
28
 
@@ -25,8 +37,10 @@ export const SECONDS_PER_WEEK = 7n * SECONDS_PER_DAY;
25
37
  /**
26
38
  * @typedef {object} PSMKit
27
39
  * @property {string} label
28
- * @property {Instance} psm
29
- * @property {Instance} psmGovernor
40
+ * @property {Instance<import('../psm/psm.js').start>} psm
41
+ * @property {Instance<
42
+ * import('../../../governance/src/contractGovernor.js').start
43
+ * >} psmGovernor
30
44
  * @property {Awaited<
31
45
  * ReturnType<
32
46
  * Awaited<
@@ -55,10 +55,10 @@ export const upgradeVaults = async (
55
55
 
56
56
  await priceAuthority8400;
57
57
 
58
+ /** @type {Instance<import('../auction/auctioneer.js').start>} */
58
59
  const auctionNewInstance = await auctionUpgradeNewInstance;
59
60
  auctionUpgradeNewInstanceProducer.reset();
60
61
  const publicFacet = E(zoe).getPublicFacet(auctionNewInstance);
61
- /** @type {import('@agoric/inter-protocol/src/auction/scheduler.js').FullSchedule} */
62
62
  const schedules = await E(publicFacet).getSchedules();
63
63
  const now = await E(chainTimerService).getCurrentTimestamp();
64
64
  (schedules.nextAuctionSchedule &&
@@ -97,7 +97,6 @@ export const upgradeVaults = async (
97
97
  for (const kwd of Object.keys(vaultBrands)) {
98
98
  const collateralBrand = vaultBrands[kwd];
99
99
 
100
- /** @type {any} */
101
100
  const governedParams = await E(directorPF).getGovernedParams({
102
101
  collateralBrand,
103
102
  });
@@ -1,4 +1,9 @@
1
- /** @import {Marshal} from '@endo/marshal'; */
1
+ /**
2
+ * @import {Marshal} from '@endo/marshal';
3
+ * @import {Amount, Brand, Payment, Purse} from '@agoric/ertp';
4
+ * @import {ContractMeta, Invitation, StandardTerms, ZCF} from '@agoric/zoe';
5
+ * @import {GovernanceTerms} from '@agoric/governance/src/types.js';
6
+ */
2
7
  /** @type {ContractMeta} */
3
8
  export const meta: ContractMeta;
4
9
  export function start(zcf: ZCF<ProvisionTerms>, privateArgs: {
@@ -16,14 +21,14 @@ export function start(zcf: ZCF<ProvisionTerms>, privateArgs: {
16
21
  } & {
17
22
  Electorate: "invitation";
18
23
  }>;
19
- } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
24
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
20
25
  get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
21
26
  PerAccountInitialAmount: "amount";
22
27
  } & {
23
28
  Electorate: "invitation";
24
29
  }>;
25
30
  }>;
26
- getInvitation: (name: any) => Promise<Invitation<unknown, undefined>>;
31
+ getInvitation: (name: any) => Promise<Invitation>;
27
32
  getLimitedCreatorFacet: () => any;
28
33
  getGovernedApis: () => GovernedApis;
29
34
  getGovernedApiNames: () => string[];
@@ -43,8 +48,8 @@ export function start(zcf: ZCF<ProvisionTerms>, privateArgs: {
43
48
  getUnknown: (name: string) => any;
44
49
  getSubscription: () => globalThis.StoredSubscription<globalThis.GovernanceSubscriptionState>;
45
50
  getGovernedParams: () => globalThis.ERef<globalThis.ParamStateRecord>;
46
- getMetrics(): any;
47
- getPublicTopics(): any;
51
+ getMetrics(): Promise<any>;
52
+ getPublicTopics(): Promise<any>;
48
53
  }>;
49
54
  }>;
50
55
  /**
@@ -53,5 +58,12 @@ export function start(zcf: ZCF<ProvisionTerms>, privateArgs: {
53
58
  export type ProvisionTerms = StandardTerms & GovernanceTerms<{
54
59
  PerAccountInitialAmount: "amount";
55
60
  }>;
61
+ import type { ContractMeta } from '@agoric/zoe';
62
+ import type { ZCF } from '@agoric/zoe';
63
+ import type { Invitation } from '@agoric/zoe';
56
64
  import type { Marshal } from '@endo/marshal';
65
+ import type { Amount } from '@agoric/ertp';
66
+ import type { Brand } from '@agoric/ertp';
67
+ import type { StandardTerms } from '@agoric/zoe';
68
+ import type { GovernanceTerms } from '@agoric/governance/src/types.js';
57
69
  //# sourceMappingURL=provisionPool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAoBA,8CAA8C;AAE9C,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAsBK,2BAbI,GAAG,CAAC,cAAc,CAAC,eACnB;IACN,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C,CAAC;IACF,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,mBAAmB,CAAC;IACtE,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7D,WACO,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CA2EktT,cAAc;kDAAuE,cAAc;;;;;;;GAHj2T;;;;6BAxFY,aAAa,GACrB,eAAe,CAAC;IACd,uBAAuB,EAAE,QAAQ,CAAC;CACnC,CAAC;6BAxBoB,eAAe"}
1
+ {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAmBA;;;;;GAKG;AAEH,2BAA2B;AAC3B,mBADW,YAAY,CAerB;AAsBK,2BAbI,IAAI,cAAc,CAAC,eACnB;IACN,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CACtC,OAAa,8BAA8B,EAAE,IAAI,CAC5C,CAAC;IACF,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,QAAQ,GAAG,CAAC,CAAC;IACzB,eAAe,CAAC,EAAE,OAAO,uBAAuB,EAAE,mBAAmB,CAAC;IACtE,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7D,WACO,OAAO,kBAAkB,EAAE,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0E5C;;;;6BA1FY,aAAa,GACzB,gBAAoB;IACd,uBAAuB,EAAE,QAAQ,CAAC;CACnC,CAAC;kCA1BwD,aAAa;yBAAb,aAAa;gCAAb,aAAa;6BAFlD,eAAe;4BACO,cAAc;2BAAd,cAAc;mCACC,aAAa;qCAC1C,iCAAiC"}
@@ -1,5 +1,4 @@
1
1
  // @jessie-check
2
- // @ts-check
3
2
 
4
3
  import {
5
4
  handleParamGovernance,
@@ -18,7 +17,12 @@ import {
18
17
  prepareProvisionPoolKit,
19
18
  } from './provisionPoolKit.js';
20
19
 
21
- /** @import {Marshal} from '@endo/marshal'; */
20
+ /**
21
+ * @import {Marshal} from '@endo/marshal';
22
+ * @import {Amount, Brand, Payment, Purse} from '@agoric/ertp';
23
+ * @import {ContractMeta, Invitation, StandardTerms, ZCF} from '@agoric/zoe';
24
+ * @import {GovernanceTerms} from '@agoric/governance/src/types.js';
25
+ */
22
26
 
23
27
  /** @type {ContractMeta} */
24
28
  export const meta = {
@@ -89,33 +93,35 @@ export const start = async (zcf, privateArgs, baggage) => {
89
93
  makeBridgeProvisionTool,
90
94
  });
91
95
 
96
+ const poolBrand = /** @type {Brand<'nat'>} */ (
97
+ params.getPerAccountInitialAmount().brand
98
+ );
92
99
  const provisionPoolKit = await provideSingleton(
93
100
  baggage,
94
101
  'provisionPoolKit',
95
102
  () =>
96
103
  makeProvisionPoolKit({
97
- // XXX governance can change the brand of the amount but should only be able to change the value
98
- // NB: changing the brand will break this pool
99
- // @ts-expect-error XXX Brand AssetKind
100
- poolBrand: params.getPerAccountInitialAmount().brand,
104
+ poolBrand,
101
105
  storageNode: privateArgs.storageNode,
102
106
  }),
103
- kit => kit.helper.start({ metrics: metricsOverride }),
104
107
  );
108
+ provisionPoolKit.helper.start(poolBrand, { metrics: metricsOverride });
105
109
 
106
110
  const publicFacet = prepareExo(
107
111
  baggage,
108
112
  'Provisioning Pool public',
109
113
  M.interface('ProvisionPool', {
110
- getMetrics: M.call().returns(M.remotable('MetricsSubscriber')),
111
- getPublicTopics: M.call().returns(TopicsRecordShape),
114
+ getMetrics: M.callWhen().returns(M.remotable('MetricsSubscriber')),
115
+ getPublicTopics: M.callWhen().returns(TopicsRecordShape),
112
116
  ...publicMixinAPI,
113
117
  }),
114
118
  {
115
- getMetrics() {
119
+ async getMetrics() {
120
+ await null;
116
121
  return provisionPoolKit.public.getPublicTopics().metrics.subscriber;
117
122
  },
118
- getPublicTopics() {
123
+ async getPublicTopics() {
124
+ await null;
119
125
  return provisionPoolKit.public.getPublicTopics();
120
126
  },
121
127
  ...publicMixin,
@@ -1,4 +1,14 @@
1
- export function prepareBridgeProvisionTool(zone: import("@agoric/zone").Zone): (bankManager?: any, walletFactory?: any, namesByAddressAdmin?: any, forHandler?: any) => import("@endo/exo").Guarded<{
1
+ export function prepareBridgeProvisionTool(zone: import("@agoric/zone").Zone): (bankManager: ERef<import("@endo/exo").Guarded<{
2
+ getAssetSubscription(): IterableEachTopic<AssetDescriptor>;
3
+ getRewardDistributorDepositFacet(denom: string, feeKit: AssetIssuerKit): ERef<import("jessie.js").EOnly<import("@agoric/ertp").DepositFacet>>;
4
+ getModuleAccountAddress(moduleName: string): Promise<string | null>;
5
+ addAsset(denom: string, issuerName: string, proposedName: string, kit: AssetIssuerKit & {
6
+ payment?: ERef<Payment<"nat">>;
7
+ }): Promise<void>;
8
+ getBankForAddress(address: string): Promise<Bank>;
9
+ }>>, walletFactory: ERef<import("@endo/exo").Guarded<{
10
+ provideSmartWallet(address: string, bank: ERef<import("@agoric/vats/src/vat-bank.js").Bank>, namesByAddressAdmin: ERef<import("@agoric/vats").NameAdmin>): Promise<[wallet: import("@agoric/smart-wallet/src/smartWallet").SmartWallet, isNew: boolean]>;
11
+ }>>, namesByAddressAdmin: ERef<import("@agoric/vats").NameAdmin>, forHandler: any) => import("@endo/exo").Guarded<{
2
12
  /** @param {BridgeMessage} obj */
3
13
  fromBridge(obj: BridgeMessage): Promise<void>;
4
14
  }>;
@@ -15,6 +25,7 @@ export function prepareProvisionPoolKit(zone: import("@agoric/zone").Zone, { mak
15
25
  export type ProvisionPoolKit = {
16
26
  machine: any;
17
27
  helper: any;
28
+ forHandler: any;
18
29
  public: any;
19
30
  };
20
31
  export type PsmInstance = import("@agoric/zoe/src/zoeService/utils.js").Instance<(zcf: ZCF<GovernanceTerms<{
@@ -29,7 +40,7 @@ export type PsmInstance = import("@agoric/zoe/src/zoeService/utils.js").Instance
29
40
  initialPoserInvitation: Invitation;
30
41
  storageNode: StorageNode;
31
42
  marshaller: Marshaller;
32
- }, baggage: import("@agoric/vat-data").Baggage) => Promise<{
43
+ }, baggage: Baggage) => Promise<{
33
44
  creatorFacet: import("@endo/exo").Guarded<{
34
45
  getParamMgrRetriever: () => {
35
46
  get: () => import("@agoric/governance/src/contractGovernance/typedParamManager").TypedParamManager<{
@@ -39,7 +50,7 @@ export type PsmInstance = import("@agoric/zoe/src/zoeService/utils.js").Instance
39
50
  } & {
40
51
  Electorate: "invitation";
41
52
  }>;
42
- } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
53
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
43
54
  get: () => import("@agoric/governance/src/contractGovernance/typedParamManager").TypedParamManager<{
44
55
  GiveMintedFee: "ratio";
45
56
  MintLimit: "amount";
@@ -48,11 +59,11 @@ export type PsmInstance = import("@agoric/zoe/src/zoeService/utils.js").Instance
48
59
  Electorate: "invitation";
49
60
  }>;
50
61
  }>;
51
- getInvitation: (name: any) => Promise<Invitation<unknown, undefined>>;
62
+ getInvitation: (name: any) => Promise<globalThis.Invitation>;
52
63
  getLimitedCreatorFacet: () => import("@endo/exo").Guarded<{
53
64
  getRewardAllocation(): Allocation;
54
- makeCollectFeesInvitation(): Promise<Invitation<string, undefined>>;
55
- makeRestoreMetricsInvitation(): Promise<Invitation<void, Omit<import("@agoric/inter-protocol/src/psm/psm.js").MetricsNotification, "anchorPoolBalance">>>;
65
+ makeCollectFeesInvitation(): Promise<globalThis.Invitation<string>>;
66
+ makeRestoreMetricsInvitation(): Promise<globalThis.Invitation<void, Omit<import("@agoric/inter-protocol/src/psm/psm.js").MetricsNotification, "anchorPoolBalance">>>;
56
67
  }>;
57
68
  getGovernedApis: () => GovernedApis;
58
69
  getGovernedApiNames: () => string[];
@@ -77,8 +88,8 @@ export type PsmInstance = import("@agoric/zoe/src/zoeService/utils.js").Instance
77
88
  getPublicTopics(): {
78
89
  metrics: import("@agoric/zoe/src/contractSupport").PublicTopic<import("@agoric/inter-protocol/src/psm/psm.js").MetricsNotification>;
79
90
  };
80
- makeWantMintedInvitation(): Promise<Invitation<void, undefined>>;
81
- makeGiveMintedInvitation(): Promise<Invitation<void, undefined>>;
91
+ makeWantMintedInvitation(): Promise<globalThis.Invitation<void, undefined>>;
92
+ makeGiveMintedInvitation(): Promise<globalThis.Invitation<void, undefined>>;
82
93
  }>;
83
94
  }>>;
84
95
  export type ProvisionPoolKitReferences = {
@@ -106,9 +117,13 @@ export type MetricsNotification = {
106
117
  */
107
118
  totalMintedConverted: Amount<"nat">;
108
119
  };
109
- import type { BridgeMessage } from '@agoric/cosmic-swingset/src/types.js';
110
- import type { Bank } from '@agoric/vats/src/vat-bank.js';
111
120
  import type { ERef } from '@endo/far';
112
- import type { Amount } from '@agoric/ertp/src/types.js';
121
+ import type { Payment } from '@agoric/ertp';
122
+ import type { Bank } from '@agoric/vats/src/vat-bank.js';
123
+ import type { BridgeMessage } from '@agoric/cosmic-swingset/src/types.js';
124
+ import type { ZCF } from '@agoric/zoe';
125
+ import type { Brand } from '@agoric/ertp';
126
+ import type { StorageNode } from '@agoric/internal/src/lib-chainStorage.js';
127
+ import type { Amount } from '@agoric/ertp';
113
128
  import type { BankManager } from '@agoric/vats/src/vat-bank.js';
114
129
  //# sourceMappingURL=provisionPoolKit.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provisionPoolKit.d.ts","sourceRoot":"","sources":["provisionPoolKit.js"],"names":[],"mappings":"AAiFO,iDAFI,OAAO,cAAc,EAAE,IAAI;IAehC,iCAAiC;oBAArB,aAAa;GA6B5B;AAYI,8CATI,OAAO,cAAc,EAAE,IAAI,uEAC3B;IACN,eAAe,EAAE,OAAO,6CAA6C,EAAE,eAAe,CAAC;IACvF,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;IACT,uBAAuB,EAAE,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;CACxE,gCA6YC;IAA2B,SAAS,EAA5B,KAAK,CAAC,KAAK,CAAC;IACY,WAAW,EAAnC,KAAK,WAAW,CAAC;CACzB,KAAU,OAAO,CAAC,gBAAgB,CAAC,CAcvC;+BAvfY;IACR,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,MAAM,EAAE,GAAG,CAAC;CACb;0BAIS,OAAO,qCAAqC,EAAE,QAAQ,CAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAiWmB,cAAC;kDAIS,cAC7B;;;;;;;;;;;;EAtWyD,CACtD;;iBAKU,KAAK,WAAW,CAAC;yBACjB,KAAK,OAAO,cAAc,EAAE,SAAS,CAAC;mBACtC,KACb,OAAW,6CAA6C,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAC/F;;;;;;;;;;wBAMU,MAAM;;;;;yBACN,OAAO,KAAK,CAAC;;;;;0BAEb,OAAO,KAAK,CAAC;;mCA7CK,sCAAsC;0BAYlC,8BAA8B;0BAF3C,WAAW;4BACT,2BAA2B;iCAChB,8BAA8B"}
1
+ {"version":3,"file":"provisionPoolKit.d.ts","sourceRoot":"","sources":["provisionPoolKit.js"],"names":[],"mappings":"AAmFO,iDAFI,OAAO,cAAc,EAAE,IAAI;;;;;eA8gBoqB,CAAC;;;;;;IArfrsB,iCAAiC;oBAArB,aAAa;GA6B5B;AAYI,8CATI,OAAO,cAAc,EAAE,IAAI,uEAC3B;IACN,eAAe,EAAE,OAAO,6CAA6C,EAAE,eAAe,CAAC;IACvF,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,OAAO,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,GAAG,EAAE,GAAG,CAAC;IACT,uBAAuB,EAAE,UAAU,CAAC,OAAO,0BAA0B,CAAC,CAAC;CACxE,gCA6bC;IAA2B,SAAS,EAA5B,MAAM,KAAK,CAAC;IACY,WAAW,EAAnC,KAAK,WAAW,CAAC;CACzB,KAAU,OAAO,CAAC,gBAAgB,CAAC,CAcvC;+BAljBY;IACR,OAAO,EAAE,GAAG,CAAC;IACb,MAAM,EAAE,GAAG,CAAC;IACZ,UAAU,EAAE,GAAG,CAAC;IAChB,MAAM,EAAE,GAAG,CAAC;CACb;0BAIS,OAAO,qCAAqC,EAAE,QAAQ,CAClE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAAyD,CACtD;;iBAKU,KAAK,WAAW,CAAC;yBACjB,KAAK,OAAO,cAAc,EAAE,SAAS,CAAC;mBACtC,KACb,OAAW,6CAA6C,EAAE,wBAAwB,CAAC,cAAc,CAAC,CAC/F;;;;;;;;;;wBAMU,MAAM;;;;;yBACN,OAAO,KAAK,CAAC;;;;;0BAEb,OAAO,KAAK,CAAC;;0BAzCJ,WAAW;6BAHc,cAAc;0BAI1B,8BAA8B;mCALlC,sCAAsC;yBAGhD,aAAa;2BAFa,cAAc;iCAChC,0CAA0C;4BADxB,cAAc;iCAI1B,8BAA8B"}
@@ -15,6 +15,7 @@ import {
15
15
  makeScalarBigMapStore,
16
16
  makeScalarBigSetStore,
17
17
  } from '@agoric/vat-data';
18
+ import { makeAtomicProvider, makeScalarMapStore } from '@agoric/store';
18
19
  import { PowerFlags } from '@agoric/vats/src/walletFlags.js';
19
20
  import {
20
21
  PublicTopicShape,
@@ -24,7 +25,13 @@ import { InstanceHandleShape } from '@agoric/zoe/src/typeGuards.js';
24
25
  import { isUpgradeDisconnection } from '@agoric/internal/src/upgrade-api.js';
25
26
 
26
27
  /**
28
+ * @import {EReturn} from '@endo/far';
27
29
  * @import {BridgeMessage} from '@agoric/cosmic-swingset/src/types.js';
30
+ * @import {Amount, Brand, Payment, Purse} from '@agoric/ertp';
31
+ * @import {StorageNode} from '@agoric/internal/src/lib-chainStorage.js';
32
+ * @import {ZCF} from '@agoric/zoe';
33
+ * @import {ERef} from '@endo/far'
34
+ * @import {Bank, BankManager} from '@agoric/vats/src/vat-bank.js'
28
35
  */
29
36
 
30
37
  const trace = makeTracer('ProvPool');
@@ -33,17 +40,12 @@ const FIRST_UPPER_KEYWORD = /^[A-Z][a-zA-Z0-9_$]*$/;
33
40
  // see https://github.com/Agoric/agoric-sdk/issues/8238
34
41
  const FIRST_LOWER_NEAR_KEYWORD = /^[a-z][a-zA-Z0-9_$]*$/;
35
42
 
36
- /**
37
- * @import {ERef} from '@endo/far'
38
- * @import {Amount} from '@agoric/ertp/src/types.js'
39
- * @import {Bank, BankManager} from '@agoric/vats/src/vat-bank.js'
40
- */
41
-
42
43
  // XXX when inferred, error TS2742: cannot be named without a reference to '../../../node_modules/@endo/exo/src/get-interface.js'. This is likely not portable. A type annotation is necessary.
43
44
  /**
44
45
  * @typedef {{
45
46
  * machine: any;
46
47
  * helper: any;
48
+ * forHandler: any;
47
49
  * public: any;
48
50
  * }} ProvisionPoolKit
49
51
  */
@@ -85,6 +87,16 @@ export const prepareBridgeProvisionTool = zone =>
85
87
  M.interface('ProvisionBridgeHandlerMaker', {
86
88
  fromBridge: M.callWhen(M.record()).returns(),
87
89
  }),
90
+ /**
91
+ * @param {ERef<BankManager>} bankManager
92
+ * @param {ERef<
93
+ * EReturn<
94
+ * import('@agoric/smart-wallet/src/walletFactory.js').start
95
+ * >['creatorFacet']
96
+ * >} walletFactory
97
+ * @param {ERef<import('@agoric/vats').NameAdmin>} namesByAddressAdmin
98
+ * @param {ProvisionPoolKit['forHandler']} forHandler
99
+ */
88
100
  (bankManager, walletFactory, namesByAddressAdmin, forHandler) => ({
89
101
  bankManager,
90
102
  walletFactory,
@@ -138,6 +150,20 @@ export const prepareProvisionPoolKit = (
138
150
  { makeRecorderKit, params, poolBank, zcf, makeBridgeProvisionTool },
139
151
  ) => {
140
152
  const zoe = zcf.getZoeService();
153
+ const ephemeralPurses = makeScalarMapStore('fundingPurseForBrand');
154
+ const purseProvider = makeAtomicProvider(ephemeralPurses);
155
+ const getFundingPurseForBrand = async poolBrand => {
156
+ await null;
157
+ try {
158
+ const purse = await purseProvider.provideAsync(poolBrand, brand =>
159
+ E(poolBank).getPurse(brand),
160
+ );
161
+ return purse;
162
+ } catch (err) {
163
+ trace(`🚨 could not get purse for brand ${poolBrand}`, err);
164
+ throw err;
165
+ }
166
+ };
141
167
 
142
168
  const makeProvisionPoolKitInternal = zone.exoClassKit(
143
169
  'ProvisionPoolKit',
@@ -169,7 +195,7 @@ export const prepareProvisionPoolKit = (
169
195
  },
170
196
  /**
171
197
  * @param {object} opts
172
- * @param {Purse<'nat'>} opts.fundPurse
198
+ * @param {Purse<'nat'>} [opts.fundPurse]
173
199
  * @param {Brand<'nat'>} opts.poolBrand
174
200
  * @param {StorageNode} opts.metricsNode
175
201
  */
@@ -324,35 +350,43 @@ export const prepareProvisionPoolKit = (
324
350
  );
325
351
  facets.helper.publishMetrics();
326
352
  },
353
+ /**
354
+ * @param {Amount} amount
355
+ * @param {ERef<Purse>} srcPurse
356
+ */
357
+ async onPoolDeposit(amount, srcPurse) {
358
+ const { helper } = this.facets;
359
+ const { brandToPSM, poolBrand } = this.state;
360
+
361
+ const { brand } = amount;
362
+ if (AmountMath.isEmpty(amount) || brand === poolBrand) {
363
+ return;
364
+ }
365
+
366
+ // `amount` doesn't match the current `poolBrand`, so we need to swap
367
+ // it.
368
+ if (!brandToPSM.has(brand)) {
369
+ console.error('funds arrived but no PSM instance', brand);
370
+ return;
371
+ }
372
+ const instance = brandToPSM.get(brand);
373
+ const payment = E(srcPurse).withdraw(amount);
374
+ await helper.swap(payment, amount, instance).catch(async reason => {
375
+ console.error(X`swap failed: ${reason}`);
376
+ const resolvedPayment = await payment;
377
+ return E(srcPurse).deposit(resolvedPayment);
378
+ });
379
+ },
327
380
  /**
328
381
  * @param {ERef<Purse>} exchangePurse
329
382
  * @param {ERef<Brand>} brand
330
383
  */
331
384
  watchCurrentAmount(exchangePurse, brand) {
332
- const {
333
- state: { brandToPSM, poolBrand },
334
- facets: { helper },
335
- } = this;
336
-
385
+ const { helper } = this.facets;
337
386
  void observeNotifier(E(exchangePurse).getCurrentAmountNotifier(), {
338
387
  updateState: async amount => {
339
388
  trace('provisionPool balance update', amount);
340
- if (AmountMath.isEmpty(amount) || amount.brand === poolBrand) {
341
- return;
342
- }
343
- if (!brandToPSM.has(brand)) {
344
- console.error('funds arrived but no PSM instance', brand);
345
- return;
346
- }
347
- const instance = brandToPSM.get(brand);
348
- const payment = E(exchangePurse).withdraw(amount);
349
- await helper
350
- .swap(payment, amount, instance)
351
- .catch(async reason => {
352
- console.error(X`swap failed: ${reason}`);
353
- const resolvedPayment = await payment;
354
- return E(exchangePurse).deposit(resolvedPayment);
355
- });
389
+ await helper.onPoolDeposit(amount, exchangePurse);
356
390
  },
357
391
  fail: reason => {
358
392
  if (isUpgradeDisconnection(reason)) {
@@ -418,40 +452,50 @@ export const prepareProvisionPoolKit = (
418
452
  );
419
453
  },
420
454
  /**
455
+ * @param {Brand<'nat'>} poolBrand
421
456
  * @param {object} [options]
422
457
  * @param {MetricsNotification} [options.metrics]
423
458
  */
424
- start({ metrics } = {}) {
425
- const {
426
- state: { poolBrand },
427
- facets: { helper },
428
- } = this;
459
+ start(poolBrand, { metrics } = {}) {
460
+ const { facets, state } = this;
461
+ const { helper } = facets;
462
+ const lastPoolBrand = state.poolBrand;
429
463
 
430
- // Must match. poolBrand is from durable state and the param is from
431
- // the contract, so it technically can change between incarnations.
432
- // That would be a severe bug.
464
+ // The PerAccountInitialAmount param must use the correct brand for
465
+ // this incarnation.
433
466
  AmountMath.coerce(poolBrand, params.getPerAccountInitialAmount());
434
467
 
435
- void helper.watchAssetSubscription();
436
-
468
+ // Restore old metrics.
437
469
  if (metrics) {
438
- // Restore state.
439
- // we publishMetrics() below
440
470
  const {
441
471
  walletsProvisioned,
442
472
  totalMintedProvided,
443
473
  totalMintedConverted,
444
474
  } = metrics;
445
475
  assert.typeof(walletsProvisioned, 'bigint');
446
- AmountMath.coerce(poolBrand, totalMintedProvided);
447
- AmountMath.coerce(poolBrand, totalMintedConverted);
448
- Object.assign(this.state, {
476
+ AmountMath.coerce(lastPoolBrand, totalMintedProvided);
477
+ AmountMath.coerce(lastPoolBrand, totalMintedConverted);
478
+ Object.assign(state, {
449
479
  walletsProvisioned,
450
480
  totalMintedProvided,
451
481
  totalMintedConverted,
452
482
  });
453
483
  helper.publishMetrics();
454
484
  }
485
+
486
+ // Update as needed when `poolBrand` changes.
487
+ if (poolBrand !== lastPoolBrand) {
488
+ state.poolBrand = poolBrand;
489
+ state.fundPurse = undefined;
490
+ void getFundingPurseForBrand(poolBrand).then(purse =>
491
+ helper.updateFundPurse(purse, poolBrand),
492
+ );
493
+ state.totalMintedProvided = AmountMath.makeEmpty(poolBrand);
494
+ state.totalMintedConverted = AmountMath.makeEmpty(poolBrand);
495
+ helper.publishMetrics();
496
+ }
497
+
498
+ void helper.watchAssetSubscription();
455
499
  },
456
500
  /**
457
501
  * @param {ERef<Payment>} payIn
@@ -459,10 +503,13 @@ export const prepareProvisionPoolKit = (
459
503
  * @param {PsmInstance} instance
460
504
  */
461
505
  async swap(payIn, amount, instance) {
506
+ await null;
507
+ const { facets, state } = this;
508
+ const { helper } = facets;
462
509
  const {
463
- facets: { helper },
464
- state: { fundPurse },
465
- } = this;
510
+ poolBrand,
511
+ fundPurse = await getFundingPurseForBrand(poolBrand),
512
+ } = state;
466
513
  const psmPub = E(zoe).getPublicFacet(instance);
467
514
  const proposal = harden({ give: { In: amount } });
468
515
  const invitation = E(psmPub).makeWantMintedInvitation();
@@ -472,22 +519,35 @@ export const prepareProvisionPoolKit = (
472
519
  helper.onTrade(rxd);
473
520
  return rxd;
474
521
  },
522
+ /**
523
+ * @param {Purse<'nat'>} purse
524
+ * @param {Brand<'nat'>} brand
525
+ */
526
+ updateFundPurse(purse, brand) {
527
+ const { state } = this;
528
+ if (brand !== state.poolBrand || state.fundPurse) return;
529
+ state.fundPurse = purse;
530
+ },
475
531
  },
476
532
  forHandler: {
477
533
  onProvisioned() {
478
- const { state, facets } = this;
534
+ const { facets, state } = this;
479
535
  state.walletsProvisioned += 1n;
480
536
  facets.helper.publishMetrics();
481
537
  },
482
538
  /** @param {ERef<Bank>} destBank */
483
539
  async sendInitialPayment(destBank) {
540
+ await null;
541
+ const { facets, state } = this;
542
+ const { helper } = facets;
484
543
  const {
485
- facets: { helper },
486
- state: { fundPurse, poolBrand },
487
- } = this;
544
+ poolBrand,
545
+ fundPurse = await getFundingPurseForBrand(poolBrand),
546
+ } = state;
488
547
  const perAccountInitialAmount = /** @type {Amount<'nat'>} */ (
489
548
  params.getPerAccountInitialAmount()
490
549
  );
550
+ trace('sendInitialPayment withdrawing', perAccountInitialAmount);
491
551
  const initialPmt = await E(fundPurse).withdraw(
492
552
  perAccountInitialAmount,
493
553
  );
@@ -533,7 +593,7 @@ export const prepareProvisionPoolKit = (
533
593
  * @returns {Promise<ProvisionPoolKit>}
534
594
  */
535
595
  const makeProvisionPoolKit = async ({ poolBrand, storageNode }) => {
536
- const fundPurse = await E(poolBank).getPurse(poolBrand);
596
+ const fundPurse = await getFundingPurseForBrand(poolBrand);
537
597
  const metricsNode = await E(storageNode).makeChildNode('metrics');
538
598
 
539
599
  return makeProvisionPoolKitInternal({
package/src/psm/psm.d.ts CHANGED
@@ -7,6 +7,7 @@
7
7
  */
8
8
  /**
9
9
  * @import {EReturn} from '@endo/far';
10
+ * @import {ContractMeta, FeeMintAccess, Installation} from '@agoric/zoe';
10
11
  */
11
12
  /**
12
13
  * @typedef {object} MetricsNotification Metrics naming scheme is that nouns are
@@ -50,7 +51,7 @@ export function start(zcf: ZCF<GovernanceTerms<{
50
51
  } & {
51
52
  Electorate: "invitation";
52
53
  }>;
53
- } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
54
+ } & RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
54
55
  get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
55
56
  GiveMintedFee: "ratio";
56
57
  MintLimit: "amount";
@@ -59,11 +60,11 @@ export function start(zcf: ZCF<GovernanceTerms<{
59
60
  Electorate: "invitation";
60
61
  }>;
61
62
  }>;
62
- getInvitation: (name: any) => Promise<Invitation<unknown, undefined>>;
63
+ getInvitation: (name: any) => Promise<globalThis.Invitation>;
63
64
  getLimitedCreatorFacet: () => import("@endo/exo").Guarded<{
64
65
  getRewardAllocation(): Allocation;
65
- makeCollectFeesInvitation(): Promise<Invitation<string, undefined>>;
66
- makeRestoreMetricsInvitation(): Promise<Invitation<void, Omit<MetricsNotification, "anchorPoolBalance">>>;
66
+ makeCollectFeesInvitation(): Promise<globalThis.Invitation<string>>;
67
+ makeRestoreMetricsInvitation(): Promise<globalThis.Invitation<void, Omit<MetricsNotification, "anchorPoolBalance">>>;
67
68
  }>;
68
69
  getGovernedApis: () => GovernedApis;
69
70
  getGovernedApiNames: () => string[];
@@ -88,8 +89,8 @@ export function start(zcf: ZCF<GovernanceTerms<{
88
89
  getPublicTopics(): {
89
90
  metrics: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<MetricsNotification>;
90
91
  };
91
- makeWantMintedInvitation(): Promise<Invitation<void, undefined>>;
92
- makeGiveMintedInvitation(): Promise<Invitation<void, undefined>>;
92
+ makeWantMintedInvitation(): Promise<globalThis.Invitation<void, undefined>>;
93
+ makeGiveMintedInvitation(): Promise<globalThis.Invitation<void, undefined>>;
93
94
  }>;
94
95
  }>;
95
96
  /**
@@ -124,6 +125,9 @@ export type MetricsNotification = {
124
125
  totalMintedProvided: Amount<"nat">;
125
126
  };
126
127
  export type PsmPublicFacet = EReturn<typeof start>["publicFacet"];
128
+ import type { ContractMeta } from '@agoric/zoe';
129
+ import type { FeeMintAccess } from '@agoric/zoe';
127
130
  import type { Baggage } from '@agoric/vat-data';
131
+ import type { Installation } from '@agoric/zoe';
128
132
  import type { EReturn } from '@endo/far';
129
133
  //# sourceMappingURL=psm.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"psm.d.ts","sourceRoot":"","sources":["psm.js"],"names":[],"mappings":"AAqCA;;;;;;GAMG;AAEH;;GAEG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AAEH,2BAA2B;AAC3B,mBADW,YAAY,CAkCrB;AAsBK,2BAlBI,GAAG,CACT,eAAe,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC,GAAG;IACH,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,eAAe,EAAE,KAAK,CAAC;CACxB,CACF,eACO;IACN,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;CACxB,WACO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;+CAsUwD,cAAc;kDAAuE,cAAc;;;;;;;;;;;;GAJ5K;;;;;;;;;;uBAzYa,MAAM,CAAC,KAAK,CAAC;;;;;uBAEb,MAAM,CAAC,KAAK,CAAC;;;;;oBAEb,MAAM,CAAC,KAAK,CAAC;;;;;yBAEb,MAAM,CAAC,KAAK,CAAC;;;;;yBAEb,MAAM,CAAC,KAAK,CAAC;;6BAoYb,QAAQ,OAAO,KAAK,CAAb,CAAe,aAAa,CAAC;6BA9XxB,kBAAkB;6BApBlB,WAAW"}
1
+ {"version":3,"file":"psm.d.ts","sourceRoot":"","sources":["psm.js"],"names":[],"mappings":"AAqCA;;;;;;GAMG;AAEH;;;GAGG;AAEH;;;;;;;;;;;;;GAaG;AAEH;;;GAGG;AAEH,2BAA2B;AAC3B,mBADW,YAAY,CAkCrB;AAsBK,2BAlBI,GAAG,CACT,eAAe,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,QAAQ,CAAC;CACrB,CAAC,GAAG;IACH,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC1B,eAAe,EAAE,KAAK,CAAC;CACxB,CACF,eACO;IACN,aAAa,EAAE,aAAa,CAAC;IAC7B,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,UAAU,EAAE,UAAU,CAAC;CACxB,WACO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkUjB;;;;;;;;;;uBAzYa,MAAM,CAAC,KAAK,CAAC;;;;;uBAEb,MAAM,CAAC,KAAK,CAAC;;;;;oBAEb,MAAM,CAAC,KAAK,CAAC;;;;;yBAEb,MAAM,CAAC,KAAK,CAAC;;;;;yBAEb,MAAM,CAAC,KAAK,CAAC;;6BAoYb,QAAQ,OAAO,KAAK,CAAb,CAAe,aAAa,CAAC;kCAlZU,aAAa;mCAAb,aAAa;6BAoB/C,kBAAkB;kCApBgB,aAAa;6BAD/C,WAAW"}