# Function creatableModule

- creatableModule<TModule>(): (<U>(constructor) => void)

- Class annotation to be used to decorate Modules which support an asynchronous creation pattern

  #### Type Parameters

  - #### TModule extends ModuleFields<ModuleParams<SchemaFields & PayloadFields & {
    archivist?: ArchivistModuleConfig;
    name?: string;
    paging?: Record<string, {
    size?: number;
    }>;
    schema: string;
    security?: {
    allowAnonymous?: boolean;
    allowed?: Record<string, (string | CosigningAddressSet)[]>;
    disallowed?: Record<string, string[]>;
    };
    storeQueries?: boolean;
    } & Omit<Omit<SchemaFields & PayloadFields & {
    archivist?: ArchivistModuleConfig;
    name?: string;
    paging?: Record<string, {
    size?: number;
    }>;
    schema: "network.xyo.module.config";
    security?: {
    allowAnonymous?: boolean;
    allowed?: Record<string, (string | CosigningAddressSet)[]>;
    disallowed?: Record<string, string[]>;
    };
    storeQueries?: boolean;
    } & Omit<undefined, "schema">, "schema"> & {
    schema: string;
    }, "schema">, undefined>> & EventFunctions<ModuleEventData, TModule> = Module<ModuleParams<SchemaFields & PayloadFields & {
    archivist?: ArchivistModuleConfig;
    name?: string;
    paging?: Record<string, {
    size?: number;
    }>;
    schema: string;
    security?: {
    allowAnonymous?: boolean;
    allowed?: Record<string, (string | CosigningAddressSet)[]>;
    disallowed?: Record<string, string[]>;
    };
    storeQueries?: boolean;
    } & Omit<Omit<SchemaFields & PayloadFields & {
    archivist?: ArchivistModuleConfig;
    name?: string;
    paging?: Record<string, {
    size?: number;
    }>;
    schema: "network.xyo.module.config";
    security?: {
    allowAnonymous?: boolean;
    allowed?: Record<string, (string | CosigningAddressSet)[]>;
    disallowed?: Record<string, string[]>;
    };
    storeQueries?: boolean;
    } & Omit<undefined, "schema">, "schema"> & {
    schema: string;
    }, "schema">, undefined>, ModuleEventData>

  #### Returns (<U>(constructor) => void)

  The decorated Module requiring it implement the members of the CreatableModule as statics properties/methods

  - - <U>(constructor): void

    - #### Type Parameters

      - #### U extends CreatableModule<TModule>

      #### Parameters

      - ##### constructor: U

      #### Returns void

  - Defined in modules/packages/module/packages/model/dist/types/CreatableModule.d.ts:19

Generated using TypeDoc