@agoric/inter-protocol 0.18.0-u23.0 → 0.18.0-u23.1

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 (70) hide show
  1. package/package.json +13 -13
  2. package/src/auction/util.d.ts +33 -0
  3. package/src/auction/util.d.ts.map +1 -0
  4. package/src/clientSupport.d.ts +124 -0
  5. package/src/clientSupport.d.ts.map +1 -0
  6. package/src/collectFees.d.ts +6 -0
  7. package/src/collectFees.d.ts.map +1 -0
  8. package/src/contractSupport.d.ts +36 -0
  9. package/src/contractSupport.d.ts.map +1 -0
  10. package/src/econCommitteeCharter.d.ts +54 -0
  11. package/src/econCommitteeCharter.d.ts.map +1 -0
  12. package/src/feeDistributor.d.ts +228 -0
  13. package/src/feeDistributor.d.ts.map +1 -0
  14. package/src/index.d.ts +2 -0
  15. package/src/index.d.ts.map +1 -0
  16. package/src/interest-math.d.ts +5 -0
  17. package/src/interest-math.d.ts.map +1 -0
  18. package/src/interest.d.ts +42 -0
  19. package/src/interest.d.ts.map +1 -0
  20. package/src/price/fluxAggregatorContract.d.ts +95 -0
  21. package/src/price/fluxAggregatorContract.d.ts.map +1 -0
  22. package/src/price/fluxAggregatorKit.d.ts +114 -0
  23. package/src/price/fluxAggregatorKit.d.ts.map +1 -0
  24. package/src/price/priceOracleKit.d.ts +41 -0
  25. package/src/price/priceOracleKit.d.ts.map +1 -0
  26. package/src/price/roundsManager.d.ts +211 -0
  27. package/src/price/roundsManager.d.ts.map +1 -0
  28. package/src/proposals/utils.d.ts +27 -0
  29. package/src/proposals/utils.d.ts.map +1 -0
  30. package/src/provisionPool.d.ts +87 -0
  31. package/src/provisionPool.d.ts.map +1 -0
  32. package/src/provisionPoolKit.d.ts +81 -0
  33. package/src/provisionPoolKit.d.ts.map +1 -0
  34. package/src/psm/psm.d.ts +145 -0
  35. package/src/psm/psm.d.ts.map +1 -0
  36. package/src/reserve/assetReserve.d.ts +68 -0
  37. package/src/reserve/assetReserve.d.ts.map +1 -0
  38. package/src/reserve/assetReserveKit.d.ts +106 -0
  39. package/src/reserve/assetReserveKit.d.ts.map +1 -0
  40. package/src/reserve/params.d.ts +16 -0
  41. package/src/reserve/params.d.ts.map +1 -0
  42. package/src/tokens.d.ts +3 -0
  43. package/src/tokens.d.ts.map +1 -0
  44. package/src/vaultFactory/burn.d.ts +5 -0
  45. package/src/vaultFactory/burn.d.ts.map +1 -0
  46. package/src/vaultFactory/math.d.ts +13 -0
  47. package/src/vaultFactory/math.d.ts.map +1 -0
  48. package/src/vaultFactory/orderedVaultStore.d.ts +94 -0
  49. package/src/vaultFactory/orderedVaultStore.d.ts.map +1 -0
  50. package/src/vaultFactory/params.d.ts +170 -0
  51. package/src/vaultFactory/params.d.ts.map +1 -0
  52. package/src/vaultFactory/prioritizedVaults.d.ts +283 -0
  53. package/src/vaultFactory/prioritizedVaults.d.ts.map +1 -0
  54. package/src/vaultFactory/storeUtils.d.ts +30 -0
  55. package/src/vaultFactory/storeUtils.d.ts.map +1 -0
  56. package/src/vaultFactory/types.d.ts +137 -0
  57. package/src/vaultFactory/types.d.ts.map +1 -0
  58. package/src/vaultFactory/vault.d.ts +360 -0
  59. package/src/vaultFactory/vault.d.ts.map +1 -0
  60. package/src/vaultFactory/vaultDirector.d.ts +337 -0
  61. package/src/vaultFactory/vaultDirector.d.ts.map +1 -0
  62. package/src/vaultFactory/vaultFactory.d.ts +202 -0
  63. package/src/vaultFactory/vaultFactory.d.ts.map +1 -0
  64. package/src/vaultFactory/vaultHolder.d.ts +177 -0
  65. package/src/vaultFactory/vaultHolder.d.ts.map +1 -0
  66. package/src/vaultFactory/vaultKit.d.ts +38 -0
  67. package/src/vaultFactory/vaultKit.d.ts.map +1 -0
  68. package/src/vaultFactory/vaultManager.d.ts +526 -0
  69. package/src/vaultFactory/vaultManager.d.ts.map +1 -0
  70. package/src/c.log +0 -1
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @import {Baggage} from '@agoric/vat-data'
3
+ * @import {TimerService} from '@agoric/time'
4
+ * @import {Remote} from '@agoric/internal';
5
+ * @import {ChainlinkConfig} from './fluxAggregatorKit.js';
6
+ * @import {PrioritySendersManager} from '@agoric/internal/src/priority-senders.js';
7
+ * @import {NameAdmin} from '@agoric/vats';
8
+ * @import {QuoteKit} from './roundsManager.js';
9
+ * @import {Invitation} from '@agoric/zoe';
10
+ * @import {ContractMeta, ZCF} from '@agoric/zoe';
11
+ * @import {Brand} from '@agoric/ertp';
12
+ * @import {Amount} from '@agoric/ertp';
13
+ * @import {Marshaller} from '@agoric/internal/src/lib-chainStorage.js';
14
+ * @import {StorageNode} from '@agoric/internal/src/lib-chainStorage.js';
15
+ * @import {ERef} from '@agoric/vow';
16
+ */
17
+ /** @type {ContractMeta<typeof start>} */
18
+ export const meta: ContractMeta<typeof start>;
19
+ export function start(zcf: ZCF<ChainlinkConfig & {
20
+ timer: TimerService;
21
+ brandIn: Brand<"nat">;
22
+ brandOut: Brand<"nat">;
23
+ description: string;
24
+ unitAmountIn?: Amount<"nat">;
25
+ }>, privateArgs: {
26
+ highPrioritySendersManager?: PrioritySendersManager;
27
+ initialPoserInvitation: Invitation;
28
+ marshaller: Remote<Marshaller>;
29
+ namesByAddressAdmin: ERef<NameAdmin>;
30
+ storageNode: Remote<StorageNode>;
31
+ }, baggage: Baggage): Promise<{
32
+ creatorFacet: import("@endo/exo").Guarded<{
33
+ getParamMgrRetriever: () => {
34
+ get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
35
+ Electorate: "invitation";
36
+ }>;
37
+ } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
38
+ get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
39
+ Electorate: "invitation";
40
+ }>;
41
+ }>;
42
+ getInvitation: (name: any) => Promise<Invitation>;
43
+ getLimitedCreatorFacet: () => import("@endo/exo").Guarded<{
44
+ makeOracleInvitation(oracleId: string): Promise<Invitation<{
45
+ invitationMakers: {
46
+ PushPrice(result: import("./roundsManager.js").PriceRound): Promise<Invitation<void, undefined>>;
47
+ } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
48
+ PushPrice(result: import("./roundsManager.js").PriceRound): Promise<Invitation<void, undefined>>;
49
+ }>;
50
+ oracle: import("@endo/exo").Guarded<{
51
+ pushPrice({ roundId: roundIdRaw, unitPrice: valueRaw, }: PriceDatum): Promise<void>;
52
+ getStatus(): OracleStatus;
53
+ }>;
54
+ }, undefined>>;
55
+ removeOracle(oracleId: string): Promise<void>;
56
+ getRoundData: (roundIdRaw: any) => Promise<import("./roundsManager.js").RoundData>;
57
+ initOracle(oracleId: string): Promise<import("@endo/exo").GuardedKit<{
58
+ admin: {
59
+ disable(): void;
60
+ };
61
+ oracle: {
62
+ pushPrice({ roundId: roundIdRaw, unitPrice: valueRaw, }: PriceDatum): Promise<void>;
63
+ getStatus(): OracleStatus;
64
+ };
65
+ }>>;
66
+ oracleRoundState(oracleId: string, queriedRoundId: bigint): Promise<RoundState>;
67
+ }>;
68
+ getGovernedApis: () => import("@agoric/governance").GovernedApis;
69
+ getGovernedApiNames: () => string[];
70
+ setOfferFilter: (strings: any) => Promise<void>;
71
+ }>;
72
+ publicFacet: import("@endo/exo").Guarded<{
73
+ getPriceAuthority(): import("@agoric/zoe/tools/types.js").PriceAuthority;
74
+ getPublicTopics(): {
75
+ quotes: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("@agoric/zoe/tools/types.js").PriceDescription>;
76
+ latestRound: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<import("./roundsManager.js").LatestRound>;
77
+ };
78
+ }>;
79
+ }>;
80
+ export type FluxStartFn = typeof start;
81
+ import type { ContractMeta } from '@agoric/zoe';
82
+ import type { ChainlinkConfig } from './fluxAggregatorKit.js';
83
+ import type { TimerService } from '@agoric/time';
84
+ import type { Brand } from '@agoric/ertp';
85
+ import type { Amount } from '@agoric/ertp';
86
+ import type { ZCF } from '@agoric/zoe';
87
+ import type { PrioritySendersManager } from '@agoric/internal/src/priority-senders.js';
88
+ import type { Invitation } from '@agoric/zoe';
89
+ import type { Marshaller } from '@agoric/internal/src/lib-chainStorage.js';
90
+ import type { Remote } from '@agoric/internal';
91
+ import type { NameAdmin } from '@agoric/vats';
92
+ import type { ERef } from '@agoric/vow';
93
+ import type { StorageNode } from '@agoric/internal/src/lib-chainStorage.js';
94
+ import type { Baggage } from '@agoric/vat-data';
95
+ //# sourceMappingURL=fluxAggregatorContract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluxAggregatorContract.d.ts","sourceRoot":"","sources":["fluxAggregatorContract.js"],"names":[],"mappings":"AAaA;;;;;;;;;;;;;;;GAeG;AAEH,yCAAyC;AACzC,mBADW,aAAa,OAAO,KAAK,CAAC,CAoBnC;AA0BK,2BAlBI,IACV,eAAmB,GAAG;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;CAC9B,CACF,eACO;IACN,0BAA0B,CAAC,EAAE,sBAAsB,CAAC;IACpD,sBAAsB,EAAE,UAAU,CAAC;IACnC,UAAU,EAAE,OAAO,UAAU,CAAC,CAAC;IAC/B,mBAAmB,EAAE,KAAK,SAAS,CAAC,CAAC;IACrC,WAAW,EAAE,OAAO,WAAW,CAAC,CAAC;CAClC,WACO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuIjB;0BAGa,OAAO,KAAK;kCA9LU,aAAa;qCALf,wBAAwB;kCAF3B,cAAc;2BAQrB,cAAc;4BACb,cAAc;yBAFH,aAAa;4CAJR,0CAA0C;gCAGtD,aAAa;gCAIb,0CAA0C;4BAT9C,kBAAkB;+BAGf,cAAc;0BAQnB,aAAa;iCADN,0CAA0C;6BAZ9C,kBAAkB"}
@@ -0,0 +1,114 @@
1
+ export const INVITATION_MAKERS_DESC: "oracle invitation";
2
+ export function prepareFluxAggregatorKit(baggage: Baggage, zcf: ZCF<ChainlinkConfig & {
3
+ timer: TimerService;
4
+ brandIn: Brand<"nat">;
5
+ brandOut: Brand<"nat">;
6
+ unitAmountIn?: Amount<"nat">;
7
+ }>, timerPresence: TimerService, quoteKit: QuoteKit, storageNode: Remote<StorageNode>, makeDurablePublishKit: () => PublishKit<any>, makeRecorder: MakeRecorder): Promise<() => import("@endo/exo").GuardedKit<{
8
+ creator: {
9
+ /**
10
+ * An "oracle invitation" is an invitation to be able to submit data to
11
+ * include in the priceAggregator's results.
12
+ *
13
+ * The offer result from this invitation is a OracleAdmin, which can be
14
+ * used directly to manage the price submissions as well as to terminate
15
+ * the relationship.
16
+ *
17
+ * @param {string} oracleId unique per contract instance
18
+ */
19
+ makeOracleInvitation(oracleId: string): Promise<import("@agoric/zoe").Invitation<{
20
+ invitationMakers: {
21
+ /** @param {PriceRound} result */
22
+ PushPrice(result: PriceRound): Promise<import("@agoric/zoe").Invitation<void, undefined>>;
23
+ } & import("@endo/marshal").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
24
+ /** @param {PriceRound} result */
25
+ PushPrice(result: PriceRound): Promise<import("@agoric/zoe").Invitation<void, undefined>>;
26
+ }>;
27
+ oracle: import("@endo/exo").Guarded<{
28
+ pushPrice({ roundId: roundIdRaw, unitPrice: valueRaw, }: PriceDatum): Promise<void>;
29
+ getStatus(): OracleStatus;
30
+ }>;
31
+ }, undefined>>;
32
+ /** @param {string} oracleId */
33
+ removeOracle(oracleId: string): Promise<void>;
34
+ getRoundData: (roundIdRaw: any) => Promise<import("./roundsManager.js").RoundData>;
35
+ /** @param {string} oracleId */
36
+ initOracle(oracleId: string): Promise<import("@endo/exo").GuardedKit<{
37
+ admin: {
38
+ disable(): void;
39
+ };
40
+ oracle: {
41
+ pushPrice({ roundId: roundIdRaw, unitPrice: valueRaw, }: PriceDatum): Promise<void>;
42
+ getStatus(): OracleStatus;
43
+ };
44
+ }>>;
45
+ /**
46
+ * a method to provide all current info oracleStatuses need. Intended
47
+ * only only to be callable by oracleStatuses. Not for use by contracts
48
+ * to read state.
49
+ *
50
+ * @param {string} oracleId
51
+ * @param {bigint} queriedRoundId
52
+ * @returns {Promise<RoundState>}
53
+ */
54
+ oracleRoundState(oracleId: string, queriedRoundId: bigint): Promise<RoundState>;
55
+ };
56
+ public: {
57
+ getPriceAuthority(): PriceAuthority;
58
+ getPublicTopics(): {
59
+ quotes: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<PriceDescription>;
60
+ latestRound: import("@agoric/zoe/src/contractSupport/topics.js").PublicTopic<LatestRound>;
61
+ };
62
+ };
63
+ }>>;
64
+ export type RoundState = {
65
+ eligibleForSpecificRound: boolean;
66
+ queriedRoundId: bigint;
67
+ latestSubmission: bigint;
68
+ startedAt: Timestamp;
69
+ roundTimeout: number;
70
+ oracleCount: number;
71
+ };
72
+ export type ChainlinkConfig = {
73
+ maxSubmissionCount: number;
74
+ minSubmissionCount: number;
75
+ /**
76
+ * the number of rounds an Oracle has to wait
77
+ * before they can initiate a round
78
+ */
79
+ restartDelay: bigint;
80
+ /**
81
+ * an immutable check for a lower bound of
82
+ * what submission values are accepted from an oracle
83
+ */
84
+ minSubmissionValue: number;
85
+ /**
86
+ * an immutable check for an upper bound
87
+ * of what submission values are accepted from an oracle
88
+ */
89
+ maxSubmissionValue: number;
90
+ /**
91
+ * the number of seconds after the previous round
92
+ * that allowed to lapse before allowing an oracle to skip an unfinished
93
+ * round
94
+ */
95
+ timeout: number;
96
+ };
97
+ export type FluxAggregatorKit = EReturn<EReturn<typeof prepareFluxAggregatorKit>>;
98
+ import type { Baggage } from '@agoric/vat-data';
99
+ import type { TimerService } from '@agoric/time';
100
+ import type { Brand } from '@agoric/ertp';
101
+ import type { Amount } from '@agoric/ertp';
102
+ import type { ZCF } from '@agoric/zoe';
103
+ import type { QuoteKit } from './roundsManager.js';
104
+ import type { StorageNode } from '@agoric/internal/src/lib-chainStorage.js';
105
+ import type { Remote } from '@agoric/internal';
106
+ import type { PublishKit } from '@agoric/notifier';
107
+ import type { MakeRecorder } from '@agoric/zoe/src/contractSupport/recorder.js';
108
+ import type { PriceRound } from './roundsManager.js';
109
+ import type { PriceAuthority } from '@agoric/zoe/tools/types.js';
110
+ import type { PriceDescription } from '@agoric/zoe/tools/types.js';
111
+ import type { LatestRound } from './roundsManager.js';
112
+ import type { Timestamp } from '@agoric/time';
113
+ import type { EReturn } from '@endo/far';
114
+ //# sourceMappingURL=fluxAggregatorKit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fluxAggregatorKit.d.ts","sourceRoot":"","sources":["fluxAggregatorKit.js"],"names":[],"mappings":"AAuCA,qCAAsC,mBAAmB,CAAC;AAgEnD,kDAfI,OAAO,OACP,IACN,eAAe,GAAG;IAChB,KAAK,EAAE,YAAY,CAAC;IACpB,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC;IACtB,QAAQ,EAAE,MAAM,KAAK,CAAC,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,KAAK,CAAC,CAAC;CAC9B,CACF,iBACO,YAAY,YACZ,QAAQ,eACR,OAAO,WAAW,CAAC,yBACnB,MAAM,WAAW,GAAG,CAAC,gBACrB,YAAY;;QAkJf;;;;;;;;;WASG;uCADQ,MAAM;;gBAiBX,iCAAiC;kCAArB,UAAU;;gBAAtB,iCAAiC;kCAArB,UAAU;;;;;;;QAqB5B,+BAA+B;+BAAnB,MAAM;;QAalB,+BAA+B;6BAAnB,MAAM;;;;;;;;;QAoBlB;;;;;;;;WAQG;mCAHQ,MAAM,kBACN,MAAM,GACJ,OAAO,CAAC,UAAU,CAAC;;;;;;;;;IAqDvC;;8BA3Ua,OAAO;oBACP,MAAM;sBACN,MAAM;eACN,SAAS;kBACT,MAAM;iBACN,MAAM;;;wBAMN,MAAM;wBACN,MAAM;;;;;kBACN,MAAM;;;;;wBAEN,MAAM;;;;;wBAEN,MAAM;;;;;;aAEN,MAAM;;gCA0TN,QAAQ,QAAQ,OAAO,wBAAwB,CAAC,CAAC;6BA1VrC,kBAAkB;kCAKb,cAAc;2BAfrB,cAAc;4BACb,cAAc;yBAPR,aAAa;8BACjB,oBAAoB;iCAOjB,0CAA0C;4BAZjC,kBAAkB;gCAE5B,kBAAkB;kCAIhB,6CAA6C;gCAG/C,oBAAoB;oCAR4C,4BAA4B;sCAA5B,4BAA4B;iCAM3F,oBAAoB;+BActB,cAAc;6BAtBhB,WAAW"}
@@ -0,0 +1,41 @@
1
+ export const INVITATION_MAKERS_DESC: "oracle invitation";
2
+ export function prepareOracleAdminKit(baggage: any): (args_0: HeldParams) => import("@endo/exo").GuardedKit<{
3
+ admin: {
4
+ disable(): void;
5
+ };
6
+ oracle: {
7
+ /**
8
+ * push a unitPrice result from this oracle
9
+ *
10
+ * @param {PriceDatum} datum
11
+ */
12
+ pushPrice({ roundId: roundIdRaw, unitPrice: valueRaw, }: PriceDatum): Promise<void>;
13
+ /** @returns {OracleStatus} */
14
+ getStatus(): OracleStatus;
15
+ };
16
+ }>;
17
+ export type HeldParams = {
18
+ oracleId: string;
19
+ roundPowers: {
20
+ handlePush: (status: OracleStatus, result: PriceRound) => Promise<OracleStatus>;
21
+ };
22
+ };
23
+ export type PriceDatum = {
24
+ roundId: number | undefined;
25
+ unitPrice: NatValue;
26
+ };
27
+ export type OracleStatus = {
28
+ disabled?: boolean | undefined;
29
+ lastReportedRound: bigint;
30
+ lastStartedRound: bigint;
31
+ latestSubmission: bigint;
32
+ oracleId: string;
33
+ };
34
+ export type ImmutableState = Readonly<HeldParams & {}>;
35
+ export type MutableState = OracleStatus & {};
36
+ export type State = ImmutableState & MutableState;
37
+ export type OracleKit = EReturn<EReturn<typeof prepareOracleAdminKit>>;
38
+ import type { PriceRound } from './roundsManager.js';
39
+ import type { NatValue } from '@agoric/ertp';
40
+ import type { EReturn } from '@endo/far';
41
+ //# sourceMappingURL=priceOracleKit.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"priceOracleKit.d.ts","sourceRoot":"","sources":["priceOracleKit.js"],"names":[],"mappings":"AAMA,qCAAsC,mBAAmB,CAAC;AAkEnD;;;;;QAcC;;;;WAIG;iEADQ,UAAU;QA0BrB,8BAA8B;qBAAhB,YAAY;;GAa/B;yBAjHU;IACR,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE;QACX,UAAU,EAAE,CACV,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,UAAU,KACf,OAAO,CAAC,YAAY,CAAC,CAAC;KAC5B,CAAC;CACH;yBAGU;IAAE,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,SAAS,EAAE,QAAQ,CAAA;CAAE;;;uBAKpD,MAAM;sBACN,MAAM;sBACN,MAAM;cACN,MAAM;;6BAGP,QAAQ,CAAC,UAAU,GAAG,EAAE,CAAC;2BAEzB,YAAY,GAAG,EAAE;oBAEhB,cAAc,GAAG,YAAY;wBAyF7B,QAAQ,QAAQ,OAAO,qBAAqB,CAAC,CAAC;gCAxH/B,oBAAoB;8BACtB,cAAc;6BAFf,WAAW"}
@@ -0,0 +1,211 @@
1
+ /** @type {bigint} */
2
+ export const ROUND_MAX: bigint;
3
+ export function prepareRoundsManagerKit(baggage: any): (args_0: Readonly<ChainlinkConfig & {
4
+ quoteKit: QuoteKit;
5
+ answerPublisher: Publisher<void>;
6
+ brandIn: Brand<"nat">;
7
+ brandOut: Brand<"nat">;
8
+ latestRoundPublisher: Recorder<LatestRound>;
9
+ timerPresence: TimerService;
10
+ }> & {
11
+ unitAmountIn: Amount<"nat">;
12
+ }) => import("@endo/exo").GuardedKit<{
13
+ helper: {
14
+ /** @param {bigint} roundId */
15
+ acceptingSubmissions(roundId: bigint): boolean;
16
+ /**
17
+ * @param {OracleStatus} status
18
+ * @param {bigint} roundId
19
+ */
20
+ delayed(status: OracleStatus, roundId: bigint): boolean;
21
+ /** @param {bigint} roundId */
22
+ deleteRoundDetails(roundId: bigint): void;
23
+ /** @param {bigint} roundId */
24
+ isNextRound(roundId: bigint): boolean;
25
+ /**
26
+ * @param {bigint} roundId
27
+ * @param {Timestamp} blockTimestamp
28
+ * @param {string} oracleId
29
+ */
30
+ initializeNewRound(roundId: bigint, blockTimestamp: Timestamp, oracleId: string): void;
31
+ /**
32
+ * @param {bigint} roundId
33
+ * @param {bigint} rrId reporting round ID
34
+ */
35
+ previousAndCurrentUnanswered(roundId: bigint, rrId: bigint): boolean;
36
+ /**
37
+ * @param {bigint} roundId
38
+ * @param {OracleStatus} status
39
+ * @param {Timestamp} blockTimestamp
40
+ * @returns {OracleStatus | undefined} the new status
41
+ */
42
+ proposeNewRound(roundId: bigint, status: OracleStatus, blockTimestamp: Timestamp): OracleStatus | undefined;
43
+ /**
44
+ * @param {bigint} submission
45
+ * @param {bigint} roundId
46
+ * @param {OracleStatus} status
47
+ * @returns {OracleStatus} the new status
48
+ */
49
+ recordSubmission(submission: bigint, roundId: bigint, status: OracleStatus): OracleStatus;
50
+ /**
51
+ * @param {bigint} roundId
52
+ * @param {Timestamp} blockTimestamp
53
+ */
54
+ supersedable(roundId: bigint, blockTimestamp: Timestamp): boolean;
55
+ /**
56
+ * @param {bigint} roundId
57
+ * @param {Timestamp} blockTimestamp
58
+ */
59
+ timedOut(roundId: bigint, blockTimestamp: Timestamp): boolean;
60
+ /**
61
+ * @param {bigint} roundId
62
+ * @param {Timestamp} blockTimestamp
63
+ */
64
+ updateRoundAnswer(roundId: bigint, blockTimestamp: Timestamp): (number | boolean)[] | (bigint | boolean)[];
65
+ /**
66
+ * @param {bigint} roundId
67
+ * @param {Timestamp} blockTimestamp
68
+ */
69
+ updateTimedOutRoundInfo(roundId: bigint, blockTimestamp: Timestamp): void;
70
+ /**
71
+ * @param {OracleStatus} status
72
+ * @param {bigint} roundId
73
+ * @param {Timestamp} blockTimestamp
74
+ * @returns {string | null} error message, if there is one
75
+ */
76
+ validateOracleRound(status: OracleStatus, roundId: bigint, blockTimestamp: Timestamp): string | null;
77
+ };
78
+ contract: {
79
+ /** @param {PriceQuoteValue} quote */
80
+ authenticateQuote(quote: PriceQuoteValue): Promise<{
81
+ quoteAmount: import("@agoric/ertp").SetAmount<PriceDescription>;
82
+ quotePayment: import("@agoric/ertp").Payment<"set", PriceDescription>;
83
+ }>;
84
+ /**
85
+ * @param {object} param0
86
+ * @param {number} [param0.overrideValueOut]
87
+ * @param {Timestamp} [param0.timestamp]
88
+ */
89
+ makeCreateQuote({ overrideValueOut, timestamp }?: {
90
+ overrideValueOut?: number | undefined;
91
+ timestamp?: Timestamp | undefined;
92
+ }): ((priceQuery: any) => Promise<{
93
+ quoteAmount: import("@agoric/ertp").SetAmount<PriceDescription>;
94
+ quotePayment: import("@agoric/ertp").Payment<"set", PriceDescription>;
95
+ }> | undefined) & import("@endo/marshal").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, (priceQuery: any) => Promise<{
96
+ quoteAmount: import("@agoric/ertp").SetAmount<PriceDescription>;
97
+ quotePayment: import("@agoric/ertp").Payment<"set", PriceDescription>;
98
+ }> | undefined>;
99
+ /**
100
+ * @param {OracleStatus} status
101
+ * @param {bigint} queriedRoundId
102
+ * @param {Timestamp} blockTimestamp
103
+ */
104
+ eligibleForSpecificRound(status: OracleStatus, queriedRoundId: bigint, blockTimestamp: Timestamp): boolean;
105
+ /**
106
+ * consumers are encouraged to check that they're receiving fresh data
107
+ * by inspecting the updatedAt and answeredInRound return values.
108
+ *
109
+ * @param {bigint | number} roundIdRaw
110
+ * @returns {Promise<RoundData>}
111
+ */
112
+ getRoundData(roundIdRaw: bigint | number): Promise<RoundData>;
113
+ getRoundStatus(roundId: bigint): Readonly<RoundDetails & Round>;
114
+ /**
115
+ * a method to provide all current info oracleStatuses need. Intended
116
+ * only to be callable by oracleStatuses. Not for use by contracts to
117
+ * read state.
118
+ *
119
+ * @param {OracleStatus} status
120
+ * @param {Timestamp} blockTimestamp
121
+ */
122
+ oracleRoundStateSuggestRound(status: OracleStatus, blockTimestamp: Timestamp): {
123
+ eligibleForSpecificRound: boolean;
124
+ queriedRoundId: bigint;
125
+ latestSubmission: bigint;
126
+ startedAt: Timestamp;
127
+ roundTimeout: number;
128
+ };
129
+ };
130
+ oracle: {
131
+ /**
132
+ * push a unitPrice result from this oracle
133
+ *
134
+ * @param {OracleStatus} status
135
+ * @param {PriceRound} result
136
+ */
137
+ handlePush(status: OracleStatus, { roundId: roundIdRaw, unitPrice: valueRaw }: PriceRound): Promise<OracleStatus>;
138
+ };
139
+ }>;
140
+ export type PriceRound = {
141
+ roundId: number | undefined;
142
+ unitPrice: NatValue;
143
+ };
144
+ export type LatestRound = Pick<RoundData, "roundId" | "startedAt"> & {
145
+ startedBy: string;
146
+ };
147
+ export type RoundData = Round & {
148
+ roundId: bigint;
149
+ };
150
+ export type Round = {
151
+ /**
152
+ * the answer for the given round
153
+ */
154
+ answer: bigint;
155
+ /**
156
+ * the timestamp when the round was started.
157
+ * This is 0 if the round hasn't been started yet.
158
+ */
159
+ startedAt: Timestamp;
160
+ /**
161
+ * the timestamp when the round last was updated
162
+ * (i.e. answer was last computed)
163
+ */
164
+ updatedAt: Timestamp;
165
+ /**
166
+ * the round ID of the round in which the
167
+ * answer was computed. answeredInRound may be smaller than roundId when the
168
+ * round timed out. answeredInRound is equal to roundId when the round didn't
169
+ * time out and was completed regularly.
170
+ */
171
+ answeredInRound: bigint;
172
+ };
173
+ export type RoundDetails = {
174
+ submissions: bigint[];
175
+ maxSubmissions: number;
176
+ minSubmissions: number;
177
+ roundTimeout: number;
178
+ };
179
+ export type QuoteKit = IssuerKit<"set", PriceDescription>;
180
+ export type HeldParams = Readonly<ChainlinkConfig & {
181
+ quoteKit: QuoteKit;
182
+ answerPublisher: Publisher<void>;
183
+ brandIn: Brand<"nat">;
184
+ brandOut: Brand<"nat">;
185
+ latestRoundPublisher: Recorder<LatestRound>;
186
+ timerPresence: TimerService;
187
+ }>;
188
+ export type ImmutableState = Readonly<HeldParams & {
189
+ details: MapStore<bigint, RoundDetails>;
190
+ rounds: MapStore<bigint, Round>;
191
+ unitIn: bigint;
192
+ }>;
193
+ export type MutableState = {
194
+ lastValueOutForUnitIn: bigint | null;
195
+ reportingRoundId: bigint;
196
+ };
197
+ export type State = ImmutableState & MutableState;
198
+ import type { ChainlinkConfig } from './fluxAggregatorKit.js';
199
+ import type { Publisher } from '@agoric/notifier';
200
+ import type { Brand } from '@agoric/ertp';
201
+ import type { Recorder } from '@agoric/zoe/src/contractSupport/recorder.js';
202
+ import type { TimerService } from '@agoric/time';
203
+ import type { Amount } from '@agoric/ertp';
204
+ import type { OracleStatus } from './priceOracleKit.js';
205
+ import type { Timestamp } from '@agoric/time';
206
+ import type { PriceQuoteValue } from '@agoric/zoe/tools/types.js';
207
+ import type { PriceDescription } from '@agoric/zoe/tools/types.js';
208
+ import type { NatValue } from '@agoric/ertp';
209
+ import type { IssuerKit } from '@agoric/ertp';
210
+ import type { MapStore } from '@agoric/store';
211
+ //# sourceMappingURL=roundsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"roundsManager.d.ts","sourceRoot":"","sources":["roundsManager.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ export function reserveThenGetNamePaths(nameAdmin: ERef<NameAdmin>, paths: string[][]): Promise<unknown[]>;
2
+ export function reserveThenGetNames(nameAdmin: ERef<NameAdmin>, names: string[]): Promise<any[]>;
3
+ export function reserveThenDeposit(debugName: string, namesByAddressAdmin: ERef<NameAdmin>, addr: string, payments: ERef<Payment>[]): Promise<void>;
4
+ export function makeInstallCache(homeP: Promise<{
5
+ scratch: ERef<ScratchPad>;
6
+ }>, { installCacheKey, loadBundle }: {
7
+ loadBundle: (specifier: string) => Promise<{
8
+ default: Bundle;
9
+ }>;
10
+ installCacheKey?: string | undefined;
11
+ }): Promise<{
12
+ wrapInstall: (install: any) => (mPath: any, bPath: any, opts: any) => Promise<any>;
13
+ saveCache: () => Promise<void>;
14
+ }>;
15
+ export function oracleBrandFeedName(inBrandName: any, outBrandName: any): string;
16
+ export function scaledPriceFeedName(issuerName: any): string;
17
+ /** @type {(name: string) => string} */
18
+ export const sanitizePathSegment: (name: string) => string;
19
+ export function provideRetiredInstances(consume: Promise<MapStore>, produce: Producer<MapStore>): Promise<MapStore>;
20
+ import type { NameAdmin } from '@agoric/vats';
21
+ import type { ERef } from '@agoric/vow';
22
+ import type { Payment } from '@agoric/ertp';
23
+ import type { ScratchPad } from '@agoric/internal/src/scratch.js';
24
+ import type { Bundle } from '@agoric/swingset-vat';
25
+ import type { MapStore } from '@agoric/store';
26
+ import type { Producer } from '@agoric/vats/src/core/types.js';
27
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["utils.js"],"names":[],"mappings":"AAuBO,mDAHI,KAAK,SAAS,CAAC,SACf,MAAM,EAAE,EAAE,sBAgCpB;AAOM,+CAJI,KAAK,SAAS,CAAC,SACf,MAAM,EAAE,GACN,OAAO,CAAC,GAAG,EAAE,CAAC,CAMxB;AAQI,8CALI,MAAM,uBACN,KAAK,SAAS,CAAC,QACf,MAAM,YACN,KAAK,OAAO,CAAC,EAAE,iBAwBzB;AA2BM,wCAPI,OAAO,CAAC;IACd,OAAO,EAAE,KAAK,UAAU,CAAC,CAAC;CAC3B,CAAC,mCAEF;IAAkE,UAAU,EAApE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IACrC,eAAe;CAAC;oCAkCD,UAAK,EAAE,UAAK,EAAE,SAAI;;GAkBzD;AAEM,iFACsC;AAEtC,6DAC+B;AAEtC,uCAAuC;AACvC,kCADW,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAKjC;AAUK,iDAJI,OAAO,CAAC,QAAQ,CAAC,WACjB,SAAS,QAAQ,CAAC,GAChB,OAAO,CAAC,QAAQ,CAAC,CAW7B;+BAjM2B,cAAc;0BAKnB,aAAa;6BADV,cAAc;gCAHX,iCAAiC;4BACrC,sBAAsB;8BAHV,eAAe;8BAOzB,gCAAgC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * @import {Remote} from '@agoric/internal';
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
+ * @import {ERef} from '@endo/far';
7
+ * @import {Bank} from '@agoric/vats/src/vat-bank.js';
8
+ * @import {MetricsNotification} from './provisionPoolKit.js';
9
+ * @import {Baggage} from '@agoric/vat-data';
10
+ * @import {StorageNode} from '@agoric/internal/src/lib-chainStorage.js';
11
+ * @import {Marshaller} from '@agoric/internal/src/lib-chainStorage.js';
12
+ */
13
+ /** @type {ContractMeta<typeof start>} */
14
+ export const meta: ContractMeta<typeof start>;
15
+ export function start(zcf: ZCF<ProvisionTerms>, privateArgs: {
16
+ poolBank: ERef<Bank>;
17
+ initialPoserInvitation: Invitation;
18
+ storageNode: Remote<StorageNode>;
19
+ marshaller: Remote<Marshaller>;
20
+ metricsOverride?: MetricsNotification;
21
+ governedParamOverrides?: Record<string, Amount | undefined>;
22
+ }, baggage: Baggage): Promise<{
23
+ creatorFacet: import("@endo/exo").Guarded<{
24
+ getParamMgrRetriever: () => {
25
+ get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
26
+ PerAccountInitialAmount: "amount";
27
+ } & {
28
+ Electorate: "invitation";
29
+ }>;
30
+ } & import("@endo/pass-style").RemotableObject<`Alleged: ${string}`> & import("@endo/eventual-send").RemotableBrand<{}, {
31
+ get: () => import("@agoric/governance/src/contractGovernance/typedParamManager.js").TypedParamManager<{
32
+ PerAccountInitialAmount: "amount";
33
+ } & {
34
+ Electorate: "invitation";
35
+ }>;
36
+ }>;
37
+ getInvitation: (name: any) => Promise<Invitation>;
38
+ getLimitedCreatorFacet: () => {
39
+ addRevivableAddresses: (oldAddresses: string[]) => void;
40
+ getWalletReviver: () => ERef<any>;
41
+ setReferences: (erefs: import("./provisionPoolKit.js").ProvisionPoolKitReferences) => Promise<void>;
42
+ makeHandler: () => ERef<import("@agoric/vats").BridgeHandler>;
43
+ initPSM: (brand: Brand, instance: import("@agoric/zoe/src/zoeService/utils.js").Instance<typeof import("./psm/psm.js").start>) => void;
44
+ };
45
+ getGovernedApis: () => import("@agoric/governance").GovernedApis;
46
+ getGovernedApiNames: () => string[];
47
+ setOfferFilter: (strings: any) => Promise<void>;
48
+ }>;
49
+ publicFacet: import("@endo/exo").Guarded<{
50
+ getAmount: (name: string) => Amount;
51
+ getBrand: (name: string) => Brand;
52
+ getInstance: (name: string) => import("@agoric/zoe").Instance;
53
+ getInstallation: (name: string) => import("@agoric/zoe").Installation;
54
+ getInvitationAmount: (name: string) => import("@agoric/zoe").InvitationAmount;
55
+ getNat: (name: string) => bigint;
56
+ getRatio: (name: string) => import("@agoric/ertp").Ratio;
57
+ getString: (name: string) => string;
58
+ getTimestamp: (name: string) => import("@agoric/time").TimestampRecord;
59
+ getRelativeTime: (name: string) => import("@agoric/time").RelativeTimeRecord;
60
+ getUnknown: (name: string) => any;
61
+ getSubscription: () => import("@agoric/notifier").StoredSubscription<import("@agoric/governance").GovernanceSubscriptionState>;
62
+ getGovernedParams: () => ERef<import("@agoric/governance").ParamStateRecord>;
63
+ getMetrics(): Promise<any>;
64
+ getPublicTopics(): Promise<any>;
65
+ }>;
66
+ }>;
67
+ /**
68
+ * TODO: ERef<GovernedCreatorFacet<ProvisionCreator>>
69
+ */
70
+ export type ProvisionTerms = StandardTerms & GovernanceTerms<{
71
+ PerAccountInitialAmount: "amount";
72
+ }>;
73
+ import type { ContractMeta } from '@agoric/zoe';
74
+ import type { ZCF } from '@agoric/zoe';
75
+ import type { Bank } from '@agoric/vats/src/vat-bank.js';
76
+ import type { ERef } from '@endo/far';
77
+ import type { Invitation } from '@agoric/zoe';
78
+ import type { StorageNode } from '@agoric/internal/src/lib-chainStorage.js';
79
+ import type { Remote } from '@agoric/internal';
80
+ import type { Marshaller } from '@agoric/internal/src/lib-chainStorage.js';
81
+ import type { MetricsNotification } from './provisionPoolKit.js';
82
+ import type { Amount } from '@agoric/ertp';
83
+ import type { Baggage } from '@agoric/vat-data';
84
+ import type { Brand } from '@agoric/ertp';
85
+ import type { StandardTerms } from '@agoric/zoe';
86
+ import type { GovernanceTerms } from '@agoric/governance/src/types.js';
87
+ //# sourceMappingURL=provisionPool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provisionPool.d.ts","sourceRoot":"","sources":["provisionPool.js"],"names":[],"mappings":"AAkBA;;;;;;;;;;;GAWG;AAEH,yCAAyC;AACzC,mBADW,aAAa,OAAO,KAAK,CAAC,CAgBnC;AAoBK,2BAXI,IAAI,cAAc,CAAC,eACnB;IACN,QAAQ,EAAE,KAAK,IAAI,CAAC,CAAC;IACrB,sBAAsB,EAAE,UAAU,CAAC;IACnC,WAAW,EAAE,OAAO,WAAW,CAAC,CAAC;IACjC,UAAU,EAAE,OAAO,UAAU,CAAC,CAAC;IAC/B,eAAe,CAAC,EAAE,mBAAmB,CAAC;IACtC,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7D,WACO,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EjB;;;;6BA3FY,aAAa,GACzB,gBAAoB;IACd,uBAAuB,EAAE,QAAQ,CAAC;CACnC,CAAC;kCAjCwD,aAAa;yBAAb,aAAa;0BAGrD,8BAA8B;0BAD9B,WAAW;gCAF6B,aAAa;iCAM9C,0CAA0C;4BAR/C,kBAAkB;gCASd,0CAA0C;yCAHjC,uBAAuB;4BALb,cAAc;6BAMpC,kBAAkB;2BANI,cAAc;mCACC,aAAa;qCAC1C,iCAAiC"}