Helper for the 90% of contracts that will have only a single set of parameters. Using this for managed parameters, a contract only has to

  • Define the parameter template, which includes name, type and value
  • Add any methods needed in the public and creator facets.

It's also crucial that the governed contract not interact with the product of makeGovernorFacet(). The wrapped creatorFacet has the power to change parameter values, and the governance guarantees only hold if they're not used directly by the governed contract.

  • Type Parameters

    • M extends ParamTypesMap

      Map of types of custom governed terms

    Parameters

    • zcf: ZCF<GovernanceTerms<M>>
    • initialPoserInvitation: Invitation<unknown, undefined>
    • paramTypesMap: M
    • OptionalstorageNode: ERef<StorageNode>
    • Optionalmarshaller: ERef<{
          fromCapData: FromCapData<unknown>;
          serialize: ToCapData<unknown>;
          toCapData: ToCapData<unknown>;
          unserialize: FromCapData<unknown>;
      }>
    • Optionaloverrides: any

    Returns {
        augmentPublicFacet: (<PF>(originalPublicFacet: PF) => GovernedPublicFacet<PF>);
        augmentVirtualPublicFacet: (<OPF>(originalPublicFacet: OPF) => OPF & {
            getAmount: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getBrand: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getGovernedParams: (() => ERef<ParamStateRecord>);
            getInstallation: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getInstance: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getInvitationAmount: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getNat: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getRatio: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getRelativeTime: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getString: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
            getTimestamp: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getUnknown: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
        } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, OPF & {
            getAmount: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getBrand: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getGovernedParams: (() => ERef<ParamStateRecord>);
            getInstallation: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getInstance: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getInvitationAmount: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getNat: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getRatio: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getRelativeTime: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getString: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
            getTimestamp: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
            getUnknown: PlusContext<never,
                | ((name: string) => SetAmount<InvitationDetails>)
                | ((name: string) => Amount)
                | ((name: string) => Brand)
                | ((name: string) => Instance)
                | ((name: string) => Installation<any>)
                | ((name: string) => bigint)
                | ((name: string) => Ratio)
                | ((name: string) => string)
                | ((name: string) => TimestampRecord)
                | ((name: string) => RelativeTimeRecord)
                | ((name: string) => any)>;
        }>);
        makeDurableGovernorFacet: (<CF>(baggage: Baggage, limitedCreatorFacet: CF, governedApis??: Record<string, ((...any: any[]) => unknown)>) => {
            governorFacet: Guarded<{
                getGovernedApiNames: (() => string[]);
                getGovernedApis: (() => GovernedApis);
                getInvitation: ((name: any) => Promise<Invitation<unknown, undefined>>);
                getLimitedCreatorFacet: (() => CF);
                getParamMgrRetriever: (() => {
                    get: (() => TypedParamManager<(...) & (...)>);
                } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, {
                    get: (() => TypedParamManager<(...)>);
                }>);
                setOfferFilter: ((strings: any) => Promise<void>);
            }>;
            limitedCreatorFacet: CF;
        });
        makeFarGovernorFacet: (<CF>(limitedCreatorFacet: CF, governedApis??: Record<string, ((...any: any[]) => unknown)>) => GovernedCreatorFacet<CF>);
        makeGovernorFacet: (<CF>(originalCreatorFacet: CF, governedApis??: {}) => GovernedCreatorFacet<CF>);
        makeVirtualGovernorFacet: (<LCF>(limitedCreatorFacet: LCF) => {
            governorFacet: FunctionsPlusContext<unknown, GovernedCreatorFacet<LCF>>;
            limitedCreatorFacet: LCF;
        });
        params: Getters<M & {
            Electorate: "invitation";
        }>;
        publicMixin: {
            getAmount: ((name: string) => Amount);
            getBrand: ((name: string) => Brand);
            getGovernedParams: (() => ERef<ParamStateRecord>);
            getInstallation: ((name: string) => Installation<any>);
            getInstance: ((name: string) => Instance);
            getInvitationAmount: ((name: string) => SetAmount<InvitationDetails>);
            getNat: ((name: string) => bigint);
            getRatio: ((name: string) => Ratio);
            getRelativeTime: ((name: string) => RelativeTimeRecord);
            getString: ((name: string) => string);
            getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
            getTimestamp: ((name: string) => TimestampRecord);
            getUnknown: ((name: string) => any);
        };
    }

    • augmentPublicFacet: (<PF>(originalPublicFacet: PF) => GovernedPublicFacet<PF>)
        • <PF>(originalPublicFacet): GovernedPublicFacet<PF>
        • Add required methods to publicFacet

          Type Parameters

          • PF extends {}

            public facet

          Parameters

          • originalPublicFacet: PF

          Returns GovernedPublicFacet<PF>

    • augmentVirtualPublicFacet: (<OPF>(originalPublicFacet: OPF) => OPF & {
          getAmount: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getBrand: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getGovernedParams: (() => ERef<ParamStateRecord>);
          getInstallation: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getInstance: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getInvitationAmount: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getNat: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getRatio: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getRelativeTime: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getString: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
          getTimestamp: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getUnknown: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
      } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, OPF & {
          getAmount: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getBrand: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getGovernedParams: (() => ERef<ParamStateRecord>);
          getInstallation: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getInstance: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getInvitationAmount: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getNat: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getRatio: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getRelativeTime: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getString: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
          getTimestamp: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
          getUnknown: PlusContext<never,
              | ((name: string) => SetAmount<InvitationDetails>)
              | ((name: string) => Amount)
              | ((name: string) => Brand)
              | ((name: string) => Instance)
              | ((name: string) => Installation<any>)
              | ((name: string) => bigint)
              | ((name: string) => Ratio)
              | ((name: string) => string)
              | ((name: string) => TimestampRecord)
              | ((name: string) => RelativeTimeRecord)
              | ((name: string) => any)>;
      }>)
        • <OPF>(originalPublicFacet): OPF & {
              getAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getBrand: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getGovernedParams: (() => ERef<ParamStateRecord>);
              getInstallation: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInstance: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInvitationAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getNat: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRatio: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRelativeTime: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getString: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
              getTimestamp: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getUnknown: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
          } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, OPF & {
              getAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getBrand: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getGovernedParams: (() => ERef<ParamStateRecord>);
              getInstallation: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInstance: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInvitationAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getNat: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRatio: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRelativeTime: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getString: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
              getTimestamp: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getUnknown: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
          }>
        • Add required methods to publicFacet, for a virtual/durable contract

          Type Parameters

          • OPF extends {}

          Parameters

          • originalPublicFacet: OPF

          Returns OPF & {
              getAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getBrand: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getGovernedParams: (() => ERef<ParamStateRecord>);
              getInstallation: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInstance: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInvitationAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getNat: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRatio: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRelativeTime: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getString: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
              getTimestamp: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getUnknown: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
          } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, OPF & {
              getAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getBrand: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getGovernedParams: (() => ERef<ParamStateRecord>);
              getInstallation: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInstance: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getInvitationAmount: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getNat: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRatio: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getRelativeTime: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getString: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
              getTimestamp: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
              getUnknown: PlusContext<never,
                  | ((name: string) => SetAmount<InvitationDetails>)
                  | ((name: string) => Amount)
                  | ((name: string) => Brand)
                  | ((name: string) => Instance)
                  | ((name: string) => Installation<any>)
                  | ((name: string) => bigint)
                  | ((name: string) => Ratio)
                  | ((name: string) => string)
                  | ((name: string) => TimestampRecord)
                  | ((name: string) => RelativeTimeRecord)
                  | ((name: string) => any)>;
          }>

    • makeDurableGovernorFacet: (<CF>(baggage: Baggage, limitedCreatorFacet: CF, governedApis??: Record<string, ((...any: any[]) => unknown)>) => {
          governorFacet: Guarded<{
              getGovernedApiNames: (() => string[]);
              getGovernedApis: (() => GovernedApis);
              getInvitation: ((name: any) => Promise<Invitation<unknown, undefined>>);
              getLimitedCreatorFacet: (() => CF);
              getParamMgrRetriever: (() => {
                  get: (() => TypedParamManager<(...) & (...)>);
              } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, {
                  get: (() => TypedParamManager<(...)>);
              }>);
              setOfferFilter: ((strings: any) => Promise<void>);
          }>;
          limitedCreatorFacet: CF;
      })
        • <CF>(baggage, limitedCreatorFacet, governedApis?): {
              governorFacet: Guarded<{
                  getGovernedApiNames: (() => string[]);
                  getGovernedApis: (() => GovernedApis);
                  getInvitation: ((name: any) => Promise<Invitation<unknown, undefined>>);
                  getLimitedCreatorFacet: (() => CF);
                  getParamMgrRetriever: (() => {
                      get: (() => TypedParamManager<(...) & (...)>);
                  } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, {
                      get: (() => TypedParamManager<(...)>);
                  }>);
                  setOfferFilter: ((strings: any) => Promise<void>);
              }>;
              limitedCreatorFacet: CF;
          }
        • Add required methods to a creatorFacet for a durable contract.

          Type Parameters

          • CF

          Parameters

          • baggage: Baggage
          • limitedCreatorFacet: CF
          • OptionalgovernedApis: Record<string, ((...any: any[]) => unknown)> = {}

          Returns {
              governorFacet: Guarded<{
                  getGovernedApiNames: (() => string[]);
                  getGovernedApis: (() => GovernedApis);
                  getInvitation: ((name: any) => Promise<Invitation<unknown, undefined>>);
                  getLimitedCreatorFacet: (() => CF);
                  getParamMgrRetriever: (() => {
                      get: (() => TypedParamManager<(...) & (...)>);
                  } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, {
                      get: (() => TypedParamManager<(...)>);
                  }>);
                  setOfferFilter: ((strings: any) => Promise<void>);
              }>;
              limitedCreatorFacet: CF;
          }

          • governorFacet: Guarded<{
                getGovernedApiNames: (() => string[]);
                getGovernedApis: (() => GovernedApis);
                getInvitation: ((name: any) => Promise<Invitation<unknown, undefined>>);
                getLimitedCreatorFacet: (() => CF);
                getParamMgrRetriever: (() => {
                    get: (() => TypedParamManager<(...) & (...)>);
                } & RemotableObject<`Alleged: ${string}`> & RemotableBrand<{}, {
                    get: (() => TypedParamManager<(...)>);
                }>);
                setOfferFilter: ((strings: any) => Promise<void>);
            }>
          • limitedCreatorFacet: CF
    • makeFarGovernorFacet: (<CF>(limitedCreatorFacet: CF, governedApis??: Record<string, ((...any: any[]) => unknown)>) => GovernedCreatorFacet<CF>)
        • <CF>(limitedCreatorFacet, governedApis?): GovernedCreatorFacet<CF>
        • Type Parameters

          • CF extends {}

          Parameters

          • limitedCreatorFacet: CF
          • OptionalgovernedApis: Record<string, ((...any: any[]) => unknown)> = {}

          Returns GovernedCreatorFacet<CF>

    • makeGovernorFacet: (<CF>(originalCreatorFacet: CF, governedApis??: {}) => GovernedCreatorFacet<CF>)
        • <CF>(originalCreatorFacet, governedApis?): GovernedCreatorFacet<CF>
        • Type Parameters

          • CF extends {}

          Parameters

          • originalCreatorFacet: CF
          • OptionalgovernedApis: {} = {}

            Returns GovernedCreatorFacet<CF>

      • makeVirtualGovernorFacet: (<LCF>(limitedCreatorFacet: LCF) => {
            governorFacet: FunctionsPlusContext<unknown, GovernedCreatorFacet<LCF>>;
            limitedCreatorFacet: LCF;
        })
          • <LCF>(limitedCreatorFacet): {
                governorFacet: FunctionsPlusContext<unknown, GovernedCreatorFacet<LCF>>;
                limitedCreatorFacet: LCF;
            }
          • Add required methods to a creatorFacet for a durable contract.

            Type Parameters

            • LCF extends {
                  [methodName: string]: ((context?: unknown, ...rest: unknown[]) => unknown);
              }

            Parameters

            • limitedCreatorFacet: LCF

            Returns {
                governorFacet: FunctionsPlusContext<unknown, GovernedCreatorFacet<LCF>>;
                limitedCreatorFacet: LCF;
            }

      • params: Getters<M & {
            Electorate: "invitation";
        }>
      • publicMixin: {
            getAmount: ((name: string) => Amount);
            getBrand: ((name: string) => Brand);
            getGovernedParams: (() => ERef<ParamStateRecord>);
            getInstallation: ((name: string) => Installation<any>);
            getInstance: ((name: string) => Instance);
            getInvitationAmount: ((name: string) => SetAmount<InvitationDetails>);
            getNat: ((name: string) => bigint);
            getRatio: ((name: string) => Ratio);
            getRelativeTime: ((name: string) => RelativeTimeRecord);
            getString: ((name: string) => string);
            getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>);
            getTimestamp: ((name: string) => TimestampRecord);
            getUnknown: ((name: string) => any);
        }
        • getAmount: ((name: string) => Amount)
        • getBrand: ((name: string) => Brand)
        • getGovernedParams: (() => ERef<ParamStateRecord>)
            • (): ERef<ParamStateRecord>
            • Returns ERef<ParamStateRecord>

        • getInstallation: ((name: string) => Installation<any>)
            • (name): Installation<any>
            • Parameters

              • name: string

              Returns Installation<any>

        • getInstance: ((name: string) => Instance)
        • getInvitationAmount: ((name: string) => SetAmount<InvitationDetails>)
        • getNat: ((name: string) => bigint)
            • (name): bigint
            • Parameters

              • name: string

              Returns bigint

        • getRatio: ((name: string) => Ratio)
        • getRelativeTime: ((name: string) => RelativeTimeRecord)
            • (name): RelativeTimeRecord
            • Parameters

              • name: string

              Returns RelativeTimeRecord

        • getString: ((name: string) => string)
            • (name): string
            • Parameters

              • name: string

              Returns string

        • getSubscription: (() => StoredSubscription<GovernanceSubscriptionState>)
        • getTimestamp: ((name: string) => TimestampRecord)
            • (name): TimestampRecord
            • Parameters

              • name: string

              Returns TimestampRecord

        • getUnknown: ((name: string) => any)
            • (name): any
            • Parameters

              • name: string

              Returns any