@grom.js/effect-tg 0.3.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (119) hide show
  1. package/dist/Bot.d.ts +13 -0
  2. package/dist/Bot.d.ts.map +1 -0
  3. package/dist/Bot.js +5 -0
  4. package/dist/Bot.js.map +1 -0
  5. package/dist/BotApi.d.ts +12 -3
  6. package/dist/BotApi.d.ts.map +1 -1
  7. package/dist/BotApi.js +7 -2
  8. package/dist/BotApi.js.map +1 -0
  9. package/dist/BotApiTransport.d.ts +11 -10
  10. package/dist/BotApiTransport.d.ts.map +1 -1
  11. package/dist/BotApiTransport.js +6 -8
  12. package/dist/BotApiTransport.js.map +1 -0
  13. package/dist/BotApiUrl.d.ts +14 -0
  14. package/dist/BotApiUrl.d.ts.map +1 -0
  15. package/dist/BotApiUrl.js +13 -0
  16. package/dist/BotApiUrl.js.map +1 -0
  17. package/dist/Content.d.ts +288 -16
  18. package/dist/Content.d.ts.map +1 -1
  19. package/dist/Content.js +189 -28
  20. package/dist/Content.js.map +1 -0
  21. package/dist/Dialog.d.ts +61 -0
  22. package/dist/Dialog.d.ts.map +1 -0
  23. package/dist/Dialog.js +35 -0
  24. package/dist/Dialog.js.map +1 -0
  25. package/dist/File.d.ts +23 -0
  26. package/dist/File.d.ts.map +1 -0
  27. package/dist/File.js +24 -0
  28. package/dist/File.js.map +1 -0
  29. package/dist/LinkPreview.d.ts +2 -2
  30. package/dist/LinkPreview.d.ts.map +1 -1
  31. package/dist/LinkPreview.js +17 -16
  32. package/dist/LinkPreview.js.map +1 -0
  33. package/dist/Markup.d.ts +41 -0
  34. package/dist/Markup.d.ts.map +1 -0
  35. package/dist/Markup.js +10 -0
  36. package/dist/Markup.js.map +1 -0
  37. package/dist/Runner.d.ts +18 -0
  38. package/dist/Runner.d.ts.map +1 -0
  39. package/dist/Runner.js +7 -0
  40. package/dist/Runner.js.map +1 -0
  41. package/dist/Send.d.ts +177 -13
  42. package/dist/Send.d.ts.map +1 -1
  43. package/dist/Send.js +187 -18
  44. package/dist/Send.js.map +1 -0
  45. package/dist/Text.d.ts +26 -10
  46. package/dist/Text.d.ts.map +1 -1
  47. package/dist/Text.js +11 -12
  48. package/dist/Text.js.map +1 -0
  49. package/dist/index.d.ts +6 -3
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js +7 -3
  52. package/dist/index.js.map +1 -0
  53. package/dist/internal/botApi.d.ts +3 -4
  54. package/dist/internal/botApi.d.ts.map +1 -1
  55. package/dist/internal/botApi.js +18 -22
  56. package/dist/internal/botApi.js.map +1 -0
  57. package/dist/internal/botApiMethods.gen.d.ts +19 -19
  58. package/dist/internal/botApiMethods.gen.d.ts.map +1 -1
  59. package/dist/internal/botApiMethods.gen.js +1 -0
  60. package/dist/internal/botApiMethods.gen.js.map +1 -0
  61. package/dist/internal/botApiShape.gen.d.ts +159 -159
  62. package/dist/internal/botApiShape.gen.d.ts.map +1 -1
  63. package/dist/internal/botApiShape.gen.js +1 -0
  64. package/dist/internal/botApiShape.gen.js.map +1 -0
  65. package/dist/internal/botApiTransport.d.ts +4 -6
  66. package/dist/internal/botApiTransport.d.ts.map +1 -1
  67. package/dist/internal/botApiTransport.js +89 -17
  68. package/dist/internal/botApiTransport.js.map +1 -0
  69. package/dist/internal/botApiTypes.gen.js +1 -0
  70. package/dist/internal/botApiTypes.gen.js.map +1 -0
  71. package/dist/internal/dialog.d.ts +12 -0
  72. package/dist/internal/dialog.d.ts.map +1 -0
  73. package/dist/internal/dialog.js +19 -0
  74. package/dist/internal/dialog.js.map +1 -0
  75. package/dist/internal/runner.d.ts +8 -0
  76. package/dist/internal/runner.d.ts.map +1 -0
  77. package/dist/internal/runner.js +38 -0
  78. package/dist/internal/runner.js.map +1 -0
  79. package/dist/internal/send.d.ts +13 -0
  80. package/dist/internal/send.d.ts.map +1 -0
  81. package/dist/internal/send.js +220 -0
  82. package/dist/internal/send.js.map +1 -0
  83. package/package.json +14 -10
  84. package/src/Bot.ts +16 -0
  85. package/src/BotApi.ts +68 -0
  86. package/src/BotApiTransport.ts +55 -0
  87. package/src/BotApiUrl.ts +28 -0
  88. package/src/Content.ts +410 -0
  89. package/src/Dialog.ts +54 -0
  90. package/src/File.ts +45 -0
  91. package/src/LinkPreview.ts +26 -0
  92. package/src/Markup.ts +33 -0
  93. package/src/Runner.ts +22 -0
  94. package/src/Send.ts +330 -0
  95. package/src/Text.ts +42 -0
  96. package/src/index.ts +12 -0
  97. package/src/internal/botApi.ts +31 -0
  98. package/src/internal/botApiMethods.gen.ts +2027 -0
  99. package/src/internal/botApiShape.gen.ts +398 -0
  100. package/src/internal/botApiTransport.ts +118 -0
  101. package/src/internal/botApiTypes.gen.ts +4178 -0
  102. package/src/internal/dialog.ts +33 -0
  103. package/src/internal/runner.ts +57 -0
  104. package/src/internal/send.ts +318 -0
  105. package/dist/BotApiWebhook.d.ts +0 -41
  106. package/dist/BotApiWebhook.d.ts.map +0 -1
  107. package/dist/BotApiWebhook.js +0 -43
  108. package/dist/Chat.d.ts +0 -96
  109. package/dist/Chat.d.ts.map +0 -1
  110. package/dist/Chat.js +0 -48
  111. package/dist/InputFile.d.ts +0 -4
  112. package/dist/InputFile.d.ts.map +0 -1
  113. package/dist/InputFile.js +0 -3
  114. package/dist/internal/botApiMethod.d.ts +0 -8
  115. package/dist/internal/botApiMethod.d.ts.map +0 -1
  116. package/dist/internal/botApiMethod.js +0 -1
  117. package/dist/internal/chat.d.ts +0 -14
  118. package/dist/internal/chat.d.ts.map +0 -1
  119. package/dist/internal/chat.js +0 -20
package/dist/Bot.d.ts ADDED
@@ -0,0 +1,13 @@
1
+ import type * as Effect from 'effect/Effect';
2
+ import type * as BotApi from './BotApi.ts';
3
+ import * as Context from 'effect/Context';
4
+ export type Bot<E = never, R = never> = Effect.Effect<void, E, R | Update>;
5
+ declare const Update_base: Context.TagClass<Update, "@grom.js/effect-tg/Bot/Update", BotApi.Types.Update>;
6
+ export declare class Update extends Update_base {
7
+ }
8
+ export interface Middleware {
9
+ <E, R>(self: Bot<E, R>): Bot<any, any>;
10
+ }
11
+ export declare const middleware: <M extends Middleware>(middleware: M) => M;
12
+ export {};
13
+ //# sourceMappingURL=Bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bot.d.ts","sourceRoot":"","sources":["../src/Bot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAA;AAC1C,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAA;;AAE1E,qBAAa,MAAO,SAAQ,WAGzB;CAAG;AAEN,MAAM,WAAW,UAAU;IACzB,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CACvC;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,SAAS,UAAU,EAAE,UAAU,EAAE,CAAC,KAAK,CAAY,CAAA"}
package/dist/Bot.js ADDED
@@ -0,0 +1,5 @@
1
+ import * as Context from 'effect/Context';
2
+ export class Update extends Context.Tag('@grom.js/effect-tg/Bot/Update')() {
3
+ }
4
+ export const middleware = mw => mw;
5
+ //# sourceMappingURL=Bot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Bot.js","sourceRoot":"","sources":["../src/Bot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAIzC,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,EAGrE;CAAG;AAMN,MAAM,CAAC,MAAM,UAAU,GAA+C,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA"}
package/dist/BotApi.d.ts CHANGED
@@ -1,15 +1,22 @@
1
- import type { BotApiTransport } from './BotApiTransport.ts';
2
1
  import type { MethodParams, MethodResults } from './internal/botApiMethods.gen.ts';
3
2
  import type { BotApiShape } from './internal/botApiShape.gen.ts';
4
3
  import type * as Types from './internal/botApiTypes.gen.ts';
5
4
  import * as Context from 'effect/Context';
5
+ import * as Effect from 'effect/Effect';
6
6
  import * as Layer from 'effect/Layer';
7
+ import * as BotApiTransport from './BotApiTransport.ts';
7
8
  export type { MethodParams, MethodResults, Types };
8
9
  declare const BotApi_base: Context.TagClass<BotApi, "@grom.js/effect-tg/BotApi", BotApiShape>;
9
10
  export declare class BotApi extends BotApi_base {
10
11
  }
12
+ export declare namespace BotApi {
13
+ type Service = BotApiShape;
14
+ }
15
+ export interface Method<M extends keyof MethodParams, E = BotApiError | BotApiTransport.BotApiTransportError, R = never> {
16
+ (params: MethodParams[M]): Effect.Effect<MethodResults[M], E, R>;
17
+ }
11
18
  declare const BotApiError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
12
- readonly _tag: "@grom.js/effect-tg/BotApiError";
19
+ readonly _tag: "@grom.js/effect-tg/BotApi/BotApiError";
13
20
  } & Readonly<A>;
14
21
  /**
15
22
  * Error returned from the Bot API server in case of unsuccessful method call.
@@ -21,5 +28,7 @@ export declare class BotApiError extends BotApiError_base<{
21
28
  }> {
22
29
  get message(): string;
23
30
  }
24
- export declare const layer: Layer.Layer<BotApi, never, BotApiTransport>;
31
+ export declare const make: (transport: BotApiTransport.BotApiTransport.Service) => BotApiShape;
32
+ export declare const layer: Layer.Layer<BotApi, never, BotApiTransport.BotApiTransport>;
33
+ export declare const callMethod: <M extends keyof MethodParams>(method: M, params: MethodParams[M]) => Effect.Effect<MethodResults[M], BotApiError | BotApiTransport.BotApiTransportError, BotApi>;
25
34
  //# sourceMappingURL=BotApi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BotApi.d.ts","sourceRoot":"","sources":["../src/BotApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAGrC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;;AAElD,qBAAa,MAAO,SAAQ,WAGzB;CAAG;;;;AAEN;;GAEG;AACH,qBAAa,WAAY,SAAQ,iBAAmD;IAClF,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAA;CACtC,CAAC;IACA,IAAa,OAAO,WAEnB;CACF;AAED,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,MAAM,EACN,KAAK,EACL,eAAe,CACsB,CAAA"}
1
+ {"version":3,"file":"BotApi.d.ts","sourceRoot":"","sources":["../src/BotApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAA;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AAGvD,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,KAAK,EAAE,CAAA;;AAElD,qBAAa,MAAO,SAAQ,WAGzB;CAAG;AAEN,MAAM,CAAC,OAAO,WAAW,MAAM,CAAC;IAC9B,KAAY,OAAO,GAAG,WAAW,CAAA;CAClC;AAED,MAAM,WAAW,MAAM,CACrB,CAAC,SAAS,MAAM,YAAY,EAC5B,CAAC,GAAG,WAAW,GAAG,eAAe,CAAC,oBAAoB,EACtD,CAAC,GAAG,KAAK;IAET,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CACjE;;;;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,iBAA0D;IACzF,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAA;CACtC,CAAC;IACA,IAAa,OAAO,WAEnB;CACF;AAED,eAAO,MAAM,IAAI,EAAE,CACjB,SAAS,EAAE,eAAe,CAAC,eAAe,CAAC,OAAO,KAC/C,WAA2B,CAAA;AAEhC,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,MAAM,EACN,KAAK,EACL,eAAe,CAAC,eAAe,CAIhC,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,CAAC,CAAC,SAAS,MAAM,YAAY,EACpD,MAAM,EAAE,CAAC,EACT,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,KACpB,MAAM,CAAC,MAAM,CAChB,aAAa,CAAC,CAAC,CAAC,EAChB,WAAW,GAAG,eAAe,CAAC,oBAAoB,EAClD,MAAM,CAMA,CAAA"}
package/dist/BotApi.js CHANGED
@@ -1,15 +1,20 @@
1
1
  import * as Context from 'effect/Context';
2
2
  import * as Data from 'effect/Data';
3
+ import * as Effect from 'effect/Effect';
3
4
  import * as Layer from 'effect/Layer';
5
+ import * as BotApiTransport from "./BotApiTransport.js";
4
6
  import * as internal from "./internal/botApi.js";
5
7
  export class BotApi extends Context.Tag('@grom.js/effect-tg/BotApi')() {
6
8
  }
7
9
  /**
8
10
  * Error returned from the Bot API server in case of unsuccessful method call.
9
11
  */
10
- export class BotApiError extends Data.TaggedError('@grom.js/effect-tg/BotApiError') {
12
+ export class BotApiError extends Data.TaggedError('@grom.js/effect-tg/BotApi/BotApiError') {
11
13
  get message() {
12
14
  return `(${this.code}) ${this.description}`;
13
15
  }
14
16
  }
15
- export const layer = Layer.effect(BotApi, internal.make);
17
+ export const make = internal.make;
18
+ export const layer = Layer.effect(BotApi, Effect.andThen(BotApiTransport.BotApiTransport, internal.make));
19
+ export const callMethod = (method, params = undefined) => BotApi.pipe(Effect.flatMap((api) => api[method](params)));
20
+ //# sourceMappingURL=BotApi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotApi.js","sourceRoot":"","sources":["../src/BotApi.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,eAAe,MAAM,sBAAsB,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,sBAAsB,CAAA;AAIhD,MAAM,OAAO,MAAO,SAAQ,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,EAGjE;CAAG;AAcN;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,IAAI,CAAC,WAAW,CAAC,uCAAuC,CAIvF;IACA,IAAa,OAAO;QAClB,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,CAAA;IAC7C,CAAC;CACF;AAED,MAAM,CAAC,MAAM,IAAI,GAEE,QAAQ,CAAC,IAAI,CAAA;AAEhC,MAAM,CAAC,MAAM,KAAK,GAId,KAAK,CAAC,MAAM,CACd,MAAM,EACN,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,eAAe,EAAE,QAAQ,CAAC,IAAI,CAAC,CAC/D,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAOnB,CACF,MAAc,EACd,SAAkB,SAAS,EAC3B,EAAE,CAAC,MAAM,CAAC,IAAI,CACd,MAAM,CAAC,OAAO,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAC3C,CAAA"}
@@ -1,12 +1,17 @@
1
- import type * as Effect from 'effect/Effect';
2
1
  import type * as Types from './internal/botApiTypes.gen.ts';
2
+ import * as HttpClient from '@effect/platform/HttpClient';
3
3
  import * as Context from 'effect/Context';
4
+ import * as Effect from 'effect/Effect';
4
5
  import * as Layer from 'effect/Layer';
5
- declare const BotApiTransport_base: Context.TagClass<BotApiTransport, "@grom.js/effect-tg/BotApiTransport", {
6
- sendRequest: (method: string, params: unknown) => Effect.Effect<BotApiResponse, BotApiTransportError>;
7
- }>;
6
+ import * as BotApiUrl from './BotApiUrl.ts';
7
+ declare const BotApiTransport_base: Context.TagClass<BotApiTransport, "@grom.js/effect-tg/BotApiTransport", BotApiTransport.Service>;
8
8
  export declare class BotApiTransport extends BotApiTransport_base {
9
9
  }
10
+ export declare namespace BotApiTransport {
11
+ interface Service {
12
+ sendRequest: (method: string, params: unknown) => Effect.Effect<BotApiResponse, BotApiTransportError>;
13
+ }
14
+ }
10
15
  /**
11
16
  * @see https://core.telegram.org/bots/api#making-requests
12
17
  */
@@ -21,7 +26,7 @@ export type BotApiResponse = {
21
26
  parameters?: Types.ResponseParameters;
22
27
  };
23
28
  declare const BotApiTransportError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
24
- readonly _tag: "@grom.js/effect-tg/BotApiTransportError";
29
+ readonly _tag: "@grom.js/effect-tg/BotApiTransport/BotApiTransportError";
25
30
  } & Readonly<A>;
26
31
  /**
27
32
  * Error caused by the transport when accessing Bot API.
@@ -30,10 +35,6 @@ export declare class BotApiTransportError extends BotApiTransportError_base<{
30
35
  cause: unknown;
31
36
  }> {
32
37
  }
33
- export declare const layerWith: (options: {
34
- makeUrl: (method: string) => URL;
35
- }) => Layer.Layer<BotApiTransport, never, import("@effect/platform/HttpClient").HttpClient>;
36
- export declare const layerProd: (token: string) => Layer.Layer<BotApiTransport, never, import("@effect/platform/HttpClient").HttpClient>;
37
- export declare const layerTest: (token: string) => Layer.Layer<BotApiTransport, never, import("@effect/platform/HttpClient").HttpClient>;
38
+ export declare const layer: Layer.Layer<BotApiTransport, never, HttpClient.HttpClient | BotApiUrl.BotApiUrl>;
38
39
  export {};
39
40
  //# sourceMappingURL=BotApiTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BotApiTransport.d.ts","sourceRoot":"","sources":["../src/BotApiTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,MAAM,eAAe,CAAA;AAC5C,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;;iBAMpB,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC;;AAN5D,qBAAa,eAAgB,SAAQ,oBAQlC;CACF;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IACA,EAAE,EAAE,IAAI,CAAA;IACR,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG;IACF,EAAE,EAAE,KAAK,CAAA;IACT,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAA;CACtC,CAAA;;;;AAEH;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,0BAA4D;IACpG,KAAK,EAAE,OAAO,CAAA;CACf,CAAC;CAAG;AAEL,eAAO,MAAM,SAAS,GAAI,SAAS;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,CAAA;CACjC,0FAA8D,CAAA;AAE/D,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,0FAItC,CAAA;AAED,eAAO,MAAM,SAAS,GAAI,OAAO,MAAM,0FAItC,CAAA"}
1
+ {"version":3,"file":"BotApiTransport.d.ts","sourceRoot":"","sources":["../src/BotApiTransport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,KAAK,MAAM,+BAA+B,CAAA;AAC3D,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;;AAG3C,qBAAa,eAAgB,SAAQ,oBAGlC;CAAG;AAEN,MAAM,CAAC,OAAO,WAAW,eAAe,CAAC;IACvC,UAAiB,OAAO;QACtB,WAAW,EAAE,CACX,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,KACZ,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,oBAAoB,CAAC,CAAA;KACzD;CACF;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB;IACA,EAAE,EAAE,IAAI,CAAA;IACR,MAAM,EAAE,OAAO,CAAA;IACf,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,GAAG;IACF,EAAE,EAAE,KAAK,CAAA;IACT,UAAU,EAAE,MAAM,CAAA;IAClB,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,CAAC,EAAE,KAAK,CAAC,kBAAkB,CAAA;CACtC,CAAA;;;;AAEH;;GAEG;AACH,qBAAa,oBAAqB,SAAQ,0BAA4E;IACpH,KAAK,EAAE,OAAO,CAAA;CACf,CAAC;CAAG;AAEL,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAC7B,eAAe,EACf,KAAK,EACL,UAAU,CAAC,UAAU,GAAG,SAAS,CAAC,SAAS,CAM5C,CAAA"}
@@ -1,18 +1,16 @@
1
+ import * as HttpClient from '@effect/platform/HttpClient';
1
2
  import * as Context from 'effect/Context';
2
3
  import * as Data from 'effect/Data';
4
+ import * as Effect from 'effect/Effect';
3
5
  import * as Layer from 'effect/Layer';
6
+ import * as BotApiUrl from "./BotApiUrl.js";
4
7
  import * as internal from "./internal/botApiTransport.js";
5
8
  export class BotApiTransport extends Context.Tag('@grom.js/effect-tg/BotApiTransport')() {
6
9
  }
7
10
  /**
8
11
  * Error caused by the transport when accessing Bot API.
9
12
  */
10
- export class BotApiTransportError extends Data.TaggedError('@grom.js/effect-tg/BotApiTransportError') {
13
+ export class BotApiTransportError extends Data.TaggedError('@grom.js/effect-tg/BotApiTransport/BotApiTransportError') {
11
14
  }
12
- export const layerWith = (options) => Layer.effect(BotApiTransport, internal.makeWith(options));
13
- export const layerProd = (token) => (layerWith({
14
- makeUrl: method => new URL(`https://api.telegram.org/bot${token}/${method}`),
15
- }));
16
- export const layerTest = (token) => (layerWith({
17
- makeUrl: method => new URL(`https://api.telegram.org/bot${token}/test/${method}`),
18
- }));
15
+ export const layer = Layer.effect(BotApiTransport, Effect.all([HttpClient.HttpClient, BotApiUrl.BotApiUrl]).pipe(Effect.andThen(reqs => internal.make(...reqs))));
16
+ //# sourceMappingURL=BotApiTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotApiTransport.js","sourceRoot":"","sources":["../src/BotApiTransport.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,UAAU,MAAM,6BAA6B,CAAA;AACzD,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAA;AAC3C,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AAEzD,MAAM,OAAO,eAAgB,SAAQ,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,EAGnF;CAAG;AA0BN;;GAEG;AACH,MAAM,OAAO,oBAAqB,SAAQ,IAAI,CAAC,WAAW,CAAC,yDAAyD,CAElH;CAAG;AAEL,MAAM,CAAC,MAAM,KAAK,GAId,KAAK,CAAC,MAAM,CACd,eAAe,EACf,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,UAAU,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAC3D,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,CAC/C,CACF,CAAA"}
@@ -0,0 +1,14 @@
1
+ import * as Context from 'effect/Context';
2
+ declare const BotApiUrl_base: Context.TagClass<BotApiUrl, "@grom.js/effect-tg/BotApiUrl", BotApiUrl.Service>;
3
+ export declare class BotApiUrl extends BotApiUrl_base {
4
+ }
5
+ export declare namespace BotApiUrl {
6
+ interface Service {
7
+ toMethod: (method: string) => URL;
8
+ toFile: (filePath: string) => URL;
9
+ }
10
+ }
11
+ export declare const makeProd: (token: string) => BotApiUrl.Service;
12
+ export declare const makeTest: (token: string) => BotApiUrl.Service;
13
+ export {};
14
+ //# sourceMappingURL=BotApiUrl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotApiUrl.d.ts","sourceRoot":"","sources":["../src/BotApiUrl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;;AAEzC,qBAAa,SAAU,SAAQ,cAG5B;CAAG;AAEN,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC;IACjC,UAAiB,OAAO;QACtB,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,GAAG,CAAA;QACjC,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,GAAG,CAAA;KAClC;CACF;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,SAAS,CAAC,OAKlD,CAAA;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,KAAG,SAAS,CAAC,OAMlD,CAAA"}
@@ -0,0 +1,13 @@
1
+ import * as Context from 'effect/Context';
2
+ export class BotApiUrl extends Context.Tag('@grom.js/effect-tg/BotApiUrl')() {
3
+ }
4
+ export const makeProd = (token) => ({
5
+ toMethod: (method) => new URL(`https://api.telegram.org/bot${token}/${method}`),
6
+ toFile: (filePath) => new URL(`https://api.telegram.org/file/bot${token}/${filePath}`),
7
+ });
8
+ export const makeTest = (token) => ({
9
+ toMethod: (method) => new URL(`https://api.telegram.org/bot${token}/test/${method}`),
10
+ // TODO: make sure this works in test environment
11
+ toFile: (filePath) => new URL(`https://api.telegram.org/file/bot${token}/${filePath}`),
12
+ });
13
+ //# sourceMappingURL=BotApiUrl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BotApiUrl.js","sourceRoot":"","sources":["../src/BotApiUrl.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAA;AAEzC,MAAM,OAAO,SAAU,SAAQ,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,EAGvE;CAAG;AASN,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAqB,EAAE,CAAC,CAC5D;IACE,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,+BAA+B,KAAK,IAAI,MAAM,EAAE,CAAC;IACvF,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,oCAAoC,KAAK,IAAI,QAAQ,EAAE,CAAC;CAC/F,CACF,CAAA;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAqB,EAAE,CAAC,CAC5D;IACE,QAAQ,EAAE,CAAC,MAAc,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,+BAA+B,KAAK,SAAS,MAAM,EAAE,CAAC;IAC5F,iDAAiD;IACjD,MAAM,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,oCAAoC,KAAK,IAAI,QAAQ,EAAE,CAAC;CAC/F,CACF,CAAA"}
package/dist/Content.d.ts CHANGED
@@ -1,43 +1,315 @@
1
- import type { MethodParams } from './BotApi.ts';
2
- import type { InputFile } from './InputFile.ts';
3
- import type { LinkPreview } from './LinkPreview.ts';
4
- import type { Text as Text$ } from './Text.ts';
1
+ import type * as Duration from 'effect/Duration';
2
+ import type * as File from './File.ts';
3
+ import type * as LinkPreview from './LinkPreview.ts';
4
+ import type * as Text_ from './Text.ts';
5
5
  import * as Option from 'effect/Option';
6
6
  /**
7
7
  * Content of a message to be sent.
8
8
  *
9
- * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_input_message_content.html td.td_api.InputMessageContent}
9
+ * @todo Paid media
10
+ * @todo Invoices (fiat & stars)
11
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1_input_message_content.html TDLib • td_api.InputMessageContent}
10
12
  */
11
- export type Content = Text | Photo;
13
+ export type Content = Text | Photo | Audio | Document | Video | Animation | Voice | VideoNote | Location | Venue | Contact | Dice | Sticker;
12
14
  declare const Text_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
13
- readonly _tag: "text";
15
+ readonly _tag: "Text";
14
16
  };
15
17
  /**
16
18
  * Content of a text message.
17
19
  *
18
- * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_text.html td.td_api.inputMessageText}
20
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_text.html TDLib • td_api.inputMessageText}
21
+ * @see {@link https://core.telegram.org/bots/api#sendmessage Bot API • sendMessage}
19
22
  */
20
23
  export declare class Text extends Text_base<{
21
- text: Text$;
22
- linkPreview: Option.Option<LinkPreview>;
24
+ text: Text_.Text;
25
+ linkPreview: Option.Option<LinkPreview.LinkPreview>;
23
26
  }> {
24
- sendParams(): Pick<MethodParams['sendMessage'], 'text' | 'entities' | 'parse_mode' | 'link_preview_options'>;
25
27
  }
26
28
  declare const Photo_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
27
- readonly _tag: "photo";
29
+ readonly _tag: "Photo";
28
30
  };
29
31
  /**
30
32
  * Content of a photo message.
31
33
  *
32
- * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_photo.html td.td_api.inputMessagePhoto}
34
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_photo.html TDLib • td_api.inputMessagePhoto}
35
+ * @see {@link https://core.telegram.org/bots/api#sendphoto Bot API • sendPhoto}
33
36
  */
34
37
  export declare class Photo extends Photo_base<{
35
- file: InputFile;
36
- caption: Option.Option<Text>;
38
+ file: File.FileId | File.External | File.InputFile;
39
+ caption: Option.Option<Text_.Text>;
37
40
  layout: 'caption-above' | 'caption-below';
38
41
  spoiler: boolean;
39
42
  }> {
40
- sendParams(): Pick<MethodParams['sendPhoto'], 'photo' | 'caption' | 'caption_entities' | 'parse_mode' | 'show_caption_above_media' | 'has_spoiler'>;
41
43
  }
44
+ declare const Audio_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
45
+ readonly _tag: "Audio";
46
+ };
47
+ /**
48
+ * Content of an audio message.
49
+ *
50
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_audio.html TDLib • td_api.inputMessageAudio}
51
+ * @see {@link https://core.telegram.org/bots/api#sendaudio Bot API • sendAudio}
52
+ */
53
+ export declare class Audio extends Audio_base<{
54
+ file: File.FileId | File.External | File.InputFile;
55
+ caption: Option.Option<Text_.Text>;
56
+ duration: Option.Option<Duration.Duration>;
57
+ performer: Option.Option<string>;
58
+ title: Option.Option<string>;
59
+ thumbnail: Option.Option<File.InputFile>;
60
+ }> {
61
+ }
62
+ declare const Document_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
63
+ readonly _tag: "Document";
64
+ };
65
+ /**
66
+ * Content of a document message.
67
+ *
68
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_document.html TDLib • td_api.inputMessageDocument}
69
+ * @see {@link https://core.telegram.org/bots/api#senddocument Bot API • sendDocument}
70
+ */
71
+ export declare class Document extends Document_base<{
72
+ file: File.FileId | File.External | File.InputFile;
73
+ caption: Option.Option<Text_.Text>;
74
+ thumbnail: Option.Option<File.InputFile>;
75
+ contentTypeDetection: boolean;
76
+ }> {
77
+ }
78
+ declare const Video_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
79
+ readonly _tag: "Video";
80
+ };
81
+ /**
82
+ * Content of a video message.
83
+ *
84
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_video.html TDLib • td_api.inputMessageVideo}
85
+ * @see {@link https://core.telegram.org/bots/api#sendvideo Bot API • sendVideo}
86
+ */
87
+ export declare class Video extends Video_base<{
88
+ file: File.FileId | File.External | File.InputFile;
89
+ caption: Option.Option<Text_.Text>;
90
+ layout: 'caption-above' | 'caption-below';
91
+ spoiler: boolean;
92
+ duration: Option.Option<Duration.Duration>;
93
+ width: Option.Option<number>;
94
+ height: Option.Option<number>;
95
+ thumbnail: Option.Option<File.InputFile>;
96
+ cover: Option.Option<File.FileId | File.External | File.InputFile>;
97
+ startAt: Option.Option<Duration.Duration>;
98
+ supportsStreaming: boolean;
99
+ }> {
100
+ }
101
+ declare const Animation_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
102
+ readonly _tag: "Animation";
103
+ };
104
+ /**
105
+ * Content of an animation message (GIF or video without sound).
106
+ *
107
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_animation.html TDLib • td_api.inputMessageAnimation}
108
+ * @see {@link https://core.telegram.org/bots/api#sendanimation Bot API • sendAnimation}
109
+ */
110
+ export declare class Animation extends Animation_base<{
111
+ file: File.FileId | File.External | File.InputFile;
112
+ caption: Option.Option<Text_.Text>;
113
+ layout: 'caption-above' | 'caption-below';
114
+ spoiler: boolean;
115
+ duration: Option.Option<Duration.Duration>;
116
+ width: Option.Option<number>;
117
+ height: Option.Option<number>;
118
+ thumbnail: Option.Option<File.InputFile>;
119
+ }> {
120
+ }
121
+ declare const Voice_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
122
+ readonly _tag: "Voice";
123
+ };
124
+ /**
125
+ * Content of a voice note message.
126
+ *
127
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_voice_note.html TDLib • td_api.inputMessageVoiceNote}
128
+ * @see {@link https://core.telegram.org/bots/api#sendvoice Bot API • sendVoice}
129
+ */
130
+ export declare class Voice extends Voice_base<{
131
+ file: File.FileId | File.External | File.InputFile;
132
+ caption: Option.Option<Text_.Text>;
133
+ duration: Option.Option<Duration.Duration>;
134
+ }> {
135
+ }
136
+ declare const VideoNote_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
137
+ readonly _tag: "VideoNote";
138
+ };
139
+ /**
140
+ * Content of a video note message (round video).
141
+ *
142
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_video_note.html TDLib • td_api.inputMessageVideoNote}
143
+ * @see {@link https://core.telegram.org/bots/api#sendvideonote Bot API • sendVideoNote}
144
+ */
145
+ export declare class VideoNote extends VideoNote_base<{
146
+ file: File.FileId | File.InputFile;
147
+ duration: Option.Option<Duration.Duration>;
148
+ diameter: Option.Option<number>;
149
+ thumbnail: Option.Option<File.InputFile>;
150
+ }> {
151
+ }
152
+ declare const Location_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
153
+ readonly _tag: "Location";
154
+ };
155
+ /**
156
+ * Content of a location message.
157
+ *
158
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_location.html TDLib • td_api.inputMessageLocation}
159
+ * @see {@link https://core.telegram.org/bots/api#sendlocation Bot API • sendLocation}
160
+ */
161
+ export declare class Location extends Location_base<{
162
+ latitude: number;
163
+ longitude: number;
164
+ uncertaintyRadius: Option.Option<number>;
165
+ livePeriod: Option.Option<Duration.Duration>;
166
+ heading: Option.Option<number>;
167
+ proximityAlertRadius: Option.Option<number>;
168
+ }> {
169
+ }
170
+ declare const Venue_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
171
+ readonly _tag: "Venue";
172
+ };
173
+ /**
174
+ * Content of a venue message.
175
+ *
176
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_venue.html TDLib • td_api.inputMessageVenue}
177
+ * @see {@link https://core.telegram.org/bots/api#sendvenue Bot API • sendVenue}
178
+ */
179
+ export declare class Venue extends Venue_base<{
180
+ latitude: number;
181
+ longitude: number;
182
+ title: string;
183
+ address: string;
184
+ foursquareId: Option.Option<string>;
185
+ foursquareType: Option.Option<string>;
186
+ googlePlaceId: Option.Option<string>;
187
+ googlePlaceType: Option.Option<string>;
188
+ }> {
189
+ }
190
+ declare const Contact_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
191
+ readonly _tag: "Contact";
192
+ };
193
+ /**
194
+ * Content of a contact message.
195
+ *
196
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_contact.html TDLib • td_api.inputMessageContact}
197
+ * @see {@link https://core.telegram.org/bots/api#sendcontact Bot API • sendContact}
198
+ */
199
+ export declare class Contact extends Contact_base<{
200
+ phoneNumber: string;
201
+ firstName: string;
202
+ lastName: Option.Option<string>;
203
+ vcard: Option.Option<string>;
204
+ }> {
205
+ }
206
+ declare const Dice_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
207
+ readonly _tag: "Dice";
208
+ };
209
+ /**
210
+ * Content of a dice message.
211
+ *
212
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_dice.html TDLib • td_api.inputMessageDice}
213
+ * @see {@link https://core.telegram.org/bots/api#senddice Bot API • sendDice}
214
+ */
215
+ export declare class Dice extends Dice_base<{
216
+ emoji: '🎲' | '🎯' | '🏀' | '⚽' | '🎳' | '🎰';
217
+ }> {
218
+ }
219
+ declare const Sticker_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => Readonly<A> & {
220
+ readonly _tag: "Sticker";
221
+ };
222
+ /**
223
+ * Content of a sticker message.
224
+ *
225
+ * @see {@link https://core.telegram.org/tdlib/docs/classtd_1_1td__api_1_1input_message_sticker.html TDLib • td_api.inputMessageSticker}
226
+ * @see {@link https://core.telegram.org/bots/api#sendsticker Bot API • sendSticker}
227
+ */
228
+ export declare class Sticker extends Sticker_base<{
229
+ file: File.FileId | File.External | File.InputFile;
230
+ emoji: Option.Option<string>;
231
+ }> {
232
+ }
233
+ export declare const text: (text: Text_.Text, options?: {
234
+ linkPreview?: LinkPreview.LinkPreview;
235
+ }) => Text;
236
+ export declare const photo: (file: File.FileId | File.External | File.InputFile, options: {
237
+ caption?: Text_.Text;
238
+ layout?: "caption-above" | "caption-below";
239
+ spoiler?: boolean;
240
+ }) => Photo;
241
+ export declare const audio: (file: File.FileId | File.External | File.InputFile, options: {
242
+ caption?: Text_.Text;
243
+ duration?: Duration.Duration;
244
+ performer?: string;
245
+ title?: string;
246
+ thumbnail?: File.InputFile;
247
+ }) => Audio;
248
+ export declare const document: (file: File.FileId | File.External | File.InputFile, options: {
249
+ caption?: Text_.Text;
250
+ thumbnail?: File.InputFile;
251
+ contentTypeDetection?: boolean;
252
+ }) => Document;
253
+ export declare const video: (file: File.FileId | File.External | File.InputFile, options: {
254
+ caption?: Text_.Text;
255
+ layout?: "caption-above" | "caption-below";
256
+ spoiler?: boolean;
257
+ duration?: Duration.Duration;
258
+ width?: number;
259
+ height?: number;
260
+ thumbnail?: File.InputFile;
261
+ cover?: File.FileId | File.External | File.InputFile;
262
+ startAt?: Duration.Duration;
263
+ supportsStreaming?: boolean;
264
+ }) => Video;
265
+ export declare const animation: (file: File.FileId | File.External | File.InputFile, options: {
266
+ caption?: Text_.Text;
267
+ layout?: "caption-above" | "caption-below";
268
+ spoiler?: boolean;
269
+ duration?: Duration.Duration;
270
+ width?: number;
271
+ height?: number;
272
+ thumbnail?: File.InputFile;
273
+ }) => Animation;
274
+ export declare const voice: (file: File.FileId | File.External | File.InputFile, options: {
275
+ caption?: Text_.Text;
276
+ duration?: Duration.Duration;
277
+ }) => Voice;
278
+ export declare const videoNote: (file: File.FileId | File.InputFile, options: {
279
+ duration?: Duration.Duration;
280
+ diameter?: number;
281
+ thumbnail?: File.InputFile;
282
+ }) => VideoNote;
283
+ export declare const location: (options: {
284
+ latitude: number;
285
+ longitude: number;
286
+ uncertaintyRadius?: number;
287
+ }) => Location;
288
+ export declare const liveLocation: (options: {
289
+ latitude: number;
290
+ longitude: number;
291
+ uncertaintyRadius?: number;
292
+ livePeriod: Duration.Duration;
293
+ heading?: number;
294
+ proximityAlertRadius?: number;
295
+ }) => Location;
296
+ export declare const venue: (options: {
297
+ latitude: number;
298
+ longitude: number;
299
+ title: string;
300
+ address: string;
301
+ foursquareId?: string;
302
+ foursquareType?: string;
303
+ googlePlaceId?: string;
304
+ googlePlaceType?: string;
305
+ }) => Venue;
306
+ export declare const contact: (options: {
307
+ phoneNumber: string;
308
+ firstName: string;
309
+ lastName?: string;
310
+ vcard?: string;
311
+ }) => Contact;
312
+ export declare const dice: (emoji: Dice["emoji"]) => Dice;
313
+ export declare const sticker: (file: File.FileId | File.External | File.InputFile, emoji?: string) => Sticker;
42
314
  export {};
43
315
  //# sourceMappingURL=Content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../src/Content.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC/C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC/C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AACnD,OAAO,KAAK,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,WAAW,CAAA;AAE9C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC;;;;GAIG;AACH,MAAM,MAAM,OAAO,GACb,IAAI,GACJ,KAAK,CAAA;;;;AAEX;;;;GAIG;AACH,qBAAa,IAAK,SAAQ,UAAyB;IACjD,IAAI,EAAE,KAAK,CAAA;IACX,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;CACxC,CAAC;IACA,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,YAAY,GAAG,sBAAsB,CAAC;CAS7G;;;;AAED;;;;GAIG;AACH,qBAAa,KAAM,SAAQ,WAA0B;IACnD,IAAI,EAAE,SAAS,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,EAAE,eAAe,GAAG,eAAe,CAAA;IACzC,OAAO,EAAE,OAAO,CAAA;CACjB,CAAC;IACA,UAAU,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,kBAAkB,GAAG,YAAY,GAAG,0BAA0B,GAAG,aAAa,CAAC;CAkBpJ"}
1
+ {"version":3,"file":"Content.d.ts","sourceRoot":"","sources":["../src/Content.ts"],"names":[],"mappings":"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"}