@bloque/sdk-swap 0.1.4 → 0.1.6

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.
@@ -1,5 +1,5 @@
1
1
  import { BaseClient } from '@bloque/sdk-core';
2
- import type { CreateBankTransferOrderParams, CreateBankTransferOrderResult } from './types';
2
+ import type { CreateBankTransferOrderOptions, CreateBankTransferOrderParams, CreateBankTransferOrderResult } from './types';
3
3
  /**
4
4
  * Generic bank transfer client for cash-out swaps
5
5
  *
@@ -8,19 +8,22 @@ import type { CreateBankTransferOrderParams, CreateBankTransferOrderResult } fro
8
8
  *
9
9
  * @example
10
10
  * ```typescript
11
- * const result = await bloque.swap.bankTransfer.create({
12
- * rateSig: rate.sig,
13
- * toMedium: 'banco_de_bogota',
14
- * amountSrc: '5000000',
15
- * depositInformation: {
16
- * bankAccountType: 'savings',
17
- * bankAccountNumber: '123456789',
18
- * bankAccountHolderName: 'Juan Pérez',
19
- * bankAccountHolderIdentificationType: 'CC',
20
- * bankAccountHolderIdentificationValue: '1234567890',
11
+ * const result = await bloque.swap.bankTransfer.create(
12
+ * {
13
+ * rateSig: rate.sig,
14
+ * toMedium: 'banco_de_bogota',
15
+ * amountSrc: '5000000',
16
+ * depositInformation: {
17
+ * bankAccountType: 'savings',
18
+ * bankAccountNumber: '123456789',
19
+ * bankAccountHolderName: 'Juan Pérez',
20
+ * bankAccountHolderIdentificationType: 'CC',
21
+ * bankAccountHolderIdentificationValue: '1234567890',
22
+ * },
23
+ * args: { accountUrn: 'did:bloque:card:abc123' },
21
24
  * },
22
- * args: { accountUrn: 'did:bloque:card:abc123' },
23
- * });
25
+ * { idempotencyKey: 'bank-transfer-5000000' }
26
+ * );
24
27
  * ```
25
28
  */
26
29
  export declare class BankTransferClient extends BaseClient {
@@ -34,7 +37,7 @@ export declare class BankTransferClient extends BaseClient {
34
37
  * @param params - Bank transfer order parameters
35
38
  * @returns Promise resolving to the created order with optional execution result
36
39
  */
37
- create(params: CreateBankTransferOrderParams): Promise<CreateBankTransferOrderResult>;
40
+ create(params: CreateBankTransferOrderParams, options?: CreateBankTransferOrderOptions): Promise<CreateBankTransferOrderResult>;
38
41
  /**
39
42
  * Maps SDK deposit information to wire format
40
43
  * @internal
@@ -8,53 +8,62 @@
8
8
  *
9
9
  * @example Transfer to Bancolombia
10
10
  * ```typescript
11
- * await bloque.swap.bankTransfer.create({
12
- * rateSig: rate.sig,
13
- * toMedium: 'bancolombia',
14
- * amountSrc: '5000000',
15
- * depositInformation: {
16
- * bankAccountType: 'savings',
17
- * bankAccountNumber: '5740088718',
18
- * bankAccountHolderName: 'Juan Pérez',
19
- * bankAccountHolderIdentificationType: 'CC',
20
- * bankAccountHolderIdentificationValue: '1234567890',
11
+ * await bloque.swap.bankTransfer.create(
12
+ * {
13
+ * rateSig: rate.sig,
14
+ * toMedium: 'bancolombia',
15
+ * amountSrc: '5000000',
16
+ * depositInformation: {
17
+ * bankAccountType: 'savings',
18
+ * bankAccountNumber: '5740088718',
19
+ * bankAccountHolderName: 'Juan Pérez',
20
+ * bankAccountHolderIdentificationType: 'CC',
21
+ * bankAccountHolderIdentificationValue: '1234567890',
22
+ * },
23
+ * args: { sourceAccountUrn: 'did:bloque:card:abc123' },
21
24
  * },
22
- * args: { sourceAccountUrn: 'did:bloque:card:abc123' },
23
- * });
25
+ * { idempotencyKey: 'bank-transfer-bancolombia-5000000' }
26
+ * );
24
27
  * ```
25
28
  *
26
29
  * @example Transfer to Banco de Bogotá
27
30
  * ```typescript
28
- * await bloque.swap.bankTransfer.create({
29
- * rateSig: rate.sig,
30
- * toMedium: 'banco_de_bogota',
31
- * amountSrc: '2000000',
32
- * depositInformation: {
33
- * bankAccountType: 'checking',
34
- * bankAccountNumber: '987654321',
35
- * bankAccountHolderName: 'María López',
36
- * bankAccountHolderIdentificationType: 'CE',
37
- * bankAccountHolderIdentificationValue: '456789',
31
+ * await bloque.swap.bankTransfer.create(
32
+ * {
33
+ * rateSig: rate.sig,
34
+ * toMedium: 'banco_de_bogota',
35
+ * amountSrc: '2000000',
36
+ * depositInformation: {
37
+ * bankAccountType: 'checking',
38
+ * bankAccountNumber: '987654321',
39
+ * bankAccountHolderName: 'María López',
40
+ * bankAccountHolderIdentificationType: 'CE',
41
+ * bankAccountHolderIdentificationValue: '456789',
42
+ * },
43
+ * args: { sourceAccountUrn: 'did:bloque:card:xyz789' },
38
44
  * },
39
- * args: { sourceAccountUrn: 'did:bloque:card:xyz789' },
40
- * });
45
+ * { idempotencyKey: 'bank-transfer-bogota-2000000' }
46
+ * );
41
47
  * ```
42
48
  *
43
49
  * @example Transfer to BBVA Colombia
44
50
  * ```typescript
45
- * await bloque.swap.bankTransfer.create({
46
- * rateSig: rate.sig,
47
- * toMedium: 'banco_bbva_colombia',
48
- * amountSrc: '10000000',
49
- * depositInformation: {
50
- * bankAccountType: 'savings',
51
- * bankAccountNumber: '1122334455',
52
- * bankAccountHolderName: 'Carlos Ruiz',
53
- * bankAccountHolderIdentificationType: 'NIT',
54
- * bankAccountHolderIdentificationValue: '900123456',
51
+ * await bloque.swap.bankTransfer.create(
52
+ * {
53
+ * rateSig: rate.sig,
54
+ * toMedium: 'banco_bbva_colombia',
55
+ * amountSrc: '10000000',
56
+ * depositInformation: {
57
+ * bankAccountType: 'savings',
58
+ * bankAccountNumber: '1122334455',
59
+ * bankAccountHolderName: 'Carlos Ruiz',
60
+ * bankAccountHolderIdentificationType: 'NIT',
61
+ * bankAccountHolderIdentificationValue: '900123456',
62
+ * },
63
+ * args: { sourceAccountUrn: 'did:bloque:card:def456' },
55
64
  * },
56
- * args: { sourceAccountUrn: 'did:bloque:card:def456' },
57
- * });
65
+ * { idempotencyKey: 'bank-transfer-bbva-10000000' }
66
+ * );
58
67
  * ```
59
68
  */
60
69
  export type SupportedBank = 'banco_agrario_de_colombia' | 'banco_av_villas' | 'banco_bancamia' | 'banco_bbva_colombia' | 'banco_btg_pactual_colombia' | 'citibank_colombia' | 'banco_caja_social_bcsc' | 'davibank' | 'banco_contactar' | 'banco_cooperativo_coopcentral' | 'ban100' | 'banco_davivienda' | 'banco_de_bogota' | 'banco_de_occidente' | 'banco_gnb_sudameris' | 'banco_jp_morgan_colombia' | 'banco_popular' | 'banco_itau' | 'bancolombia' | 'banco_w' | 'banco_coomeva' | 'banco_finandina_bic' | 'banco_falabella' | 'banco_pichincha' | 'banco_santander_de_negocios_colombia' | 'banco_mundo_mujer' | 'banco_serfinanza' | 'mibanco' | 'lulo_bank' | 'banco_union';
@@ -163,6 +172,12 @@ export interface CreateBankTransferOrderParams {
163
172
  */
164
173
  metadata?: Record<string, unknown>;
165
174
  }
175
+ export interface CreateBankTransferOrderOptions {
176
+ /**
177
+ * Optional custom idempotency key sent as `Idempotency-Key` header.
178
+ */
179
+ idempotencyKey?: string;
180
+ }
166
181
  /**
167
182
  * Swap order details
168
183
  */
@@ -1,7 +1,7 @@
1
1
  import { BaseClient } from '@bloque/sdk-core';
2
- import type { CreateBrebOrderParams, CreateBrebOrderResult } from './types';
2
+ import type { CreateBrebOrderOptions, CreateBrebOrderParams, CreateBrebOrderResult } from './types';
3
3
  export declare class BrebClient extends BaseClient {
4
- create(params: CreateBrebOrderParams): Promise<CreateBrebOrderResult>;
4
+ create(params: CreateBrebOrderParams, options?: CreateBrebOrderOptions): Promise<CreateBrebOrderResult>;
5
5
  private _mapDepositInformationToWire;
6
6
  private _mapOrderResponse;
7
7
  private _mapExecutionResult;
@@ -50,6 +50,12 @@ export interface CreateBrebOrderParams {
50
50
  */
51
51
  metadata?: Record<string, unknown>;
52
52
  }
53
+ export interface CreateBrebOrderOptions {
54
+ /**
55
+ * Optional custom idempotency key sent as `Idempotency-Key` header.
56
+ */
57
+ idempotencyKey?: string;
58
+ }
53
59
  export interface CreateBrebOrderResult {
54
60
  /**
55
61
  * The created order.
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- "use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,t)=>{for(var a in t)__webpack_require__.o(t,a)&&!__webpack_require__.o(e,a)&&Object.defineProperty(e,a,{enumerable:!0,get:t[a]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{BrebClient:()=>BrebClient,SwapClient:()=>SwapClient,BankTransferClient:()=>BankTransferClient,PseClient:()=>PseClient});const sdk_core_namespaceObject=require("@bloque/sdk-core");class BankTransferClient extends sdk_core_namespaceObject.BaseClient{async create(e){let t=this.httpClient.urn;if(!t)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=e.type??"src",r={taker_urn:t,type:a,rate_sig:e.rateSig,from_medium:"kusama",to_medium:e.toMedium,webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation)};"src"===a&&e.amountSrc?r.amount_src=e.amountSrc:"dst"===a&&e.amountDst&&(r.amount_dst=e.amountDst),e.args&&(r.args={account_urn:e.args.sourceAccountUrn}),e.nodeId&&(r.node_id=e.nodeId),e.metadata&&(r.metadata=e.metadata);let s=await this.httpClient.request({method:"PUT",path:"/api/order",body:r});return{order:this._mapOrderResponse(s.result.order),execution:s.result.execution?this._mapExecutionResult(s.result.execution):void 0,requestId:s.req_id}}_mapDepositInformationToWire(e){return{bank_account_type:e.bankAccountType,bank_account_number:e.bankAccountNumber,bank_account_holder_name:e.bankAccountHolderName,bank_account_holder_identification_type:e.bankAccountHolderIdentificationType,bank_account_holder_identification_value:e.bankAccountHolderIdentificationValue}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,webhookUrl:e.webhook_url,failureReason:e.failure_reason,failureDetails:e.failure_details,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class BrebClient extends sdk_core_namespaceObject.BaseClient{async create(e){let t=this.httpClient.urn;if(!t)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=e.type??"src",r={taker_urn:t,type:a,rate_sig:e.rateSig,from_medium:"kusama",to_medium:"breb",webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation),args:{account_urn:e.args.sourceAccountUrn}};"src"===a&&e.amountSrc?r.amount_src=e.amountSrc:"dst"===a&&e.amountDst&&(r.amount_dst=e.amountDst),e.nodeId&&(r.node_id=e.nodeId),e.metadata&&(r.metadata=e.metadata);let s=await this.httpClient.request({method:"PUT",path:"/api/order",body:r});return{order:this._mapOrderResponse(s.result.order),execution:s.result.execution?this._mapExecutionResult(s.result.execution):void 0,requestId:s.req_id}}_mapDepositInformationToWire(e){return{resolution_id:e.resolutionId}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class PseClient extends sdk_core_namespaceObject.BaseClient{async banks(){return{banks:(await this.httpClient.request({method:"GET",path:"/api/utils/pse/banks"})).banks.map(e=>this._mapBankResponse(e))}}async create(e){let t=this.httpClient.urn;if(!t)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=e.type??"src",r={taker_urn:t,type:a,rate_sig:e.rateSig,from_medium:"pse",to_medium:e.toMedium,webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation)};"src"===a&&e.amountSrc?r.amount_src=e.amountSrc:"dst"===a&&e.amountDst&&(r.amount_dst=e.amountDst),e.args&&(r.args={bank_code:e.args.bankCode,user_type:e.args.userType,customer_email:e.args.customerEmail,user_legal_id_type:e.args.userLegalIdType,user_legal_id:e.args.userLegalId,...e.args.customerData&&{customer_data:{full_name:e.args.customerData.fullName,phone_number:e.args.customerData.phoneNumber}}}),e.nodeId&&(r.node_id=e.nodeId),e.metadata&&(r.metadata=e.metadata);let s=await this.httpClient.request({method:"PUT",path:"/api/order",body:r});return{order:this._mapOrderResponse(s.result.order),execution:s.result.execution?this._mapExecutionResult(s.result.execution):void 0,requestId:s.req_id}}_mapBankResponse(e){return{code:e.financial_institution_code,name:e.financial_institution_name}}_mapDepositInformationToWire(e){return{urn:e.urn}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class SwapClient extends sdk_core_namespaceObject.BaseClient{pse;bankTransfer;breb;constructor(e){super(e),this.pse=new PseClient(this.httpClient),this.bankTransfer=new BankTransferClient(this.httpClient),this.breb=new BrebClient(this.httpClient)}async findRates(e){let t=new URLSearchParams,a=JSON.stringify([e.fromAsset,e.toAsset]);t.append("edge",a),t.append("from_medium",JSON.stringify(e.fromMediums)),t.append("to_medium",JSON.stringify(e.toMediums)),void 0!==e.amountSrc&&t.append("amount_src",e.amountSrc),void 0!==e.amountDst&&t.append("amount_dst",e.amountDst),e.sort&&t.append("sort",e.sort),e.sortBy&&t.append("sort_by",e.sortBy);let r=t.toString(),s=`/api/rates?${r}`;return{rates:(await this.httpClient.request({method:"GET",path:s})).rates.map(e=>this._mapRateResponse(e))}}async listOrders(e={}){let t=this.httpClient.urn;if(!t)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=new URLSearchParams;e.orderSig&&a.set("order_sig",e.orderSig),e.swapSig&&a.set("swap_sig",e.swapSig),e.rateSig&&a.set("rate_sig",e.rateSig),e.makerUrn&&a.set("maker_urn",e.makerUrn),e.status&&a.set("status",e.status),e.graphId&&a.set("graph_id",e.graphId),void 0!==e.after&&a.set("after",e.after.toString()),void 0!==e.before&&a.set("before",e.before.toString());let r=a.toString(),s=`/api/order/taker/${t}${r?`?${r}`:""}`;return{orders:(await this.httpClient.request({method:"GET",path:s})).orders.map(e=>this._mapOrderResponse(e))}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,webhookUrl:e.webhook_url,failureReason:e.failure_reason,failureDetails:e.failure_details,createdAt:e.created_at,updatedAt:e.updated_at}}_mapRateResponse(e){return{id:e.id,sig:e.sig,swapSig:e.swap_sig,maker:e.maker,edge:e.edge,fee:{at:e.fee.at,value:e.fee.value,formula:e.fee.formula,components:e.fee.components.map(e=>({at:e.at,name:e.name,type:e.type,value:e.value,percentage:e.percentage,pair:e.pair,amount:e.amount}))},at:e.at,until:e.until,fromMediums:e.from_medium,toMediums:e.to_medium,rate:e.rate,ratio:e.ratio,fromLimits:e.from_limits,toLimits:e.to_limits,createdAt:e.created_at,updatedAt:e.updated_at}}}for(var __rspack_i in exports.BankTransferClient=__webpack_exports__.BankTransferClient,exports.BrebClient=__webpack_exports__.BrebClient,exports.PseClient=__webpack_exports__.PseClient,exports.SwapClient=__webpack_exports__.SwapClient,__webpack_exports__)-1===["BankTransferClient","BrebClient","PseClient","SwapClient"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
1
+ "use strict";const __rslib_import_meta_url__="u"<typeof document?new(require("url".replace("",""))).URL("file:"+__filename).href:document.currentScript&&document.currentScript.src||new URL("main.js",document.baseURI).href;var __webpack_require__={};__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),__webpack_require__.r=e=>{"u">typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var __webpack_exports__={};__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{BrebClient:()=>BrebClient,SwapClient:()=>SwapClient,BankTransferClient:()=>BankTransferClient,PseClient:()=>PseClient});const sdk_core_namespaceObject=require("@bloque/sdk-core");class BankTransferClient extends sdk_core_namespaceObject.BaseClient{async create(e,t){let r=this.httpClient.urn;if(!r)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=e.type??"src",s={taker_urn:r,type:a,rate_sig:e.rateSig,from_medium:"kusama",to_medium:e.toMedium,webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation)};"src"===a&&e.amountSrc?s.amount_src=e.amountSrc:"dst"===a&&e.amountDst&&(s.amount_dst=e.amountDst),e.args&&(s.args={account_urn:e.args.sourceAccountUrn}),e.nodeId&&(s.node_id=e.nodeId),e.metadata&&(s.metadata=e.metadata);let o=await this.httpClient.request({method:"PUT",path:"/api/order",body:s,headers:t?.idempotencyKey?{"Idempotency-Key":t.idempotencyKey}:void 0});return{order:this._mapOrderResponse(o.result.order),execution:o.result.execution?this._mapExecutionResult(o.result.execution):void 0,requestId:o.req_id}}_mapDepositInformationToWire(e){return{bank_account_type:e.bankAccountType,bank_account_number:e.bankAccountNumber,bank_account_holder_name:e.bankAccountHolderName,bank_account_holder_identification_type:e.bankAccountHolderIdentificationType,bank_account_holder_identification_value:e.bankAccountHolderIdentificationValue}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,webhookUrl:e.webhook_url,failureReason:e.failure_reason,failureDetails:e.failure_details,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class BrebClient extends sdk_core_namespaceObject.BaseClient{async create(e,t){let r=this.httpClient.urn;if(!r)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=e.type??"src",s={taker_urn:r,type:a,rate_sig:e.rateSig,from_medium:"kusama",to_medium:"breb",webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation),args:{account_urn:e.args.sourceAccountUrn}};"src"===a&&e.amountSrc?s.amount_src=e.amountSrc:"dst"===a&&e.amountDst&&(s.amount_dst=e.amountDst),e.nodeId&&(s.node_id=e.nodeId),e.metadata&&(s.metadata=e.metadata);let o=await this.httpClient.request({method:"PUT",path:"/api/order",body:s,headers:t?.idempotencyKey?{"Idempotency-Key":t.idempotencyKey}:void 0});return{order:this._mapOrderResponse(o.result.order),execution:o.result.execution?this._mapExecutionResult(o.result.execution):void 0,requestId:o.req_id}}_mapDepositInformationToWire(e){return{resolution_id:e.resolutionId}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class PseClient extends sdk_core_namespaceObject.BaseClient{async banks(){return{banks:(await this.httpClient.request({method:"GET",path:"/api/utils/pse/banks"})).banks.map(e=>this._mapBankResponse(e))}}async create(e,t){let r=this.httpClient.urn;if(!r)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let a=e.type??"src",s={taker_urn:r,type:a,rate_sig:e.rateSig,from_medium:"pse",to_medium:e.toMedium,webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation)};"src"===a&&e.amountSrc?s.amount_src=e.amountSrc:"dst"===a&&e.amountDst&&(s.amount_dst=e.amountDst),e.args&&(s.args={bank_code:e.args.bankCode,user_type:e.args.userType,customer_email:e.args.customerEmail,user_legal_id_type:e.args.userLegalIdType,user_legal_id:e.args.userLegalId,...e.args.customerData&&{customer_data:{full_name:e.args.customerData.fullName,phone_number:e.args.customerData.phoneNumber}}}),e.nodeId&&(s.node_id=e.nodeId),e.metadata&&(s.metadata=e.metadata);let o=await this.httpClient.request({method:"PUT",path:"/api/order",body:s,headers:t?.idempotencyKey?{"Idempotency-Key":t.idempotencyKey}:void 0});return{order:this._mapOrderResponse(o.result.order),execution:o.result.execution?this._mapExecutionResult(o.result.execution):void 0,requestId:o.req_id}}_mapBankResponse(e){return{code:e.financial_institution_code,name:e.financial_institution_name}}_mapDepositInformationToWire(e){return{urn:e.urn}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class SwapClient extends sdk_core_namespaceObject.BaseClient{pse;bankTransfer;breb;constructor(e){super(e),this.pse=new PseClient(this.httpClient),this.bankTransfer=new BankTransferClient(this.httpClient),this.breb=new BrebClient(this.httpClient)}async findRates(e){let t=new URLSearchParams,r=JSON.stringify([e.fromAsset,e.toAsset]);t.append("edge",r),t.append("from_medium",JSON.stringify(e.fromMediums)),t.append("to_medium",JSON.stringify(e.toMediums)),void 0!==e.amountSrc&&t.append("amount_src",e.amountSrc),void 0!==e.amountDst&&t.append("amount_dst",e.amountDst),e.sort&&t.append("sort",e.sort),e.sortBy&&t.append("sort_by",e.sortBy);let a=t.toString(),s=`/api/rates?${a}`;return{rates:(await this.httpClient.request({method:"GET",path:s})).rates.map(e=>this._mapRateResponse(e))}}async listOrders(e={}){let t=this.httpClient.urn;if(!t)throw new sdk_core_namespaceObject.BloqueConfigError("User URN is not available. Please connect to a session first.");let r=new URLSearchParams;e.orderSig&&r.set("order_sig",e.orderSig),e.swapSig&&r.set("swap_sig",e.swapSig),e.rateSig&&r.set("rate_sig",e.rateSig),e.makerUrn&&r.set("maker_urn",e.makerUrn),e.status&&r.set("status",e.status),e.graphId&&r.set("graph_id",e.graphId),void 0!==e.after&&r.set("after",e.after.toString()),void 0!==e.before&&r.set("before",e.before.toString());let a=r.toString(),s=`/api/order/taker/${t}${a?`?${a}`:""}`;return{orders:(await this.httpClient.request({method:"GET",path:s})).orders.map(e=>this._mapOrderResponse(e))}}async cancelSubscription(e){let t=await this.httpClient.request({method:"POST",path:`/api/order/${e.orderId}/cancel-subscription`});return{status:t.result.status,cursor:t.result.cursor,orderId:t.result.order_id,graphId:t.result.graph_id}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,webhookUrl:e.webhook_url,failureReason:e.failure_reason,failureDetails:e.failure_details,createdAt:e.created_at,updatedAt:e.updated_at}}_mapRateResponse(e){return{id:e.id,sig:e.sig,swapSig:e.swap_sig,maker:e.maker,edge:e.edge,fee:{at:e.fee.at,value:e.fee.value,formula:e.fee.formula,components:e.fee.components.map(e=>({at:e.at,name:e.name,type:e.type,value:e.value,percentage:e.percentage,pair:e.pair,amount:e.amount}))},at:e.at,until:e.until,fromMediums:e.from_medium,toMediums:e.to_medium,rate:e.rate,ratio:e.ratio,fromLimits:e.from_limits,toLimits:e.to_limits,createdAt:e.created_at,updatedAt:e.updated_at}}}for(var __rspack_i in exports.BankTransferClient=__webpack_exports__.BankTransferClient,exports.BrebClient=__webpack_exports__.BrebClient,exports.PseClient=__webpack_exports__.PseClient,exports.SwapClient=__webpack_exports__.SwapClient,__webpack_exports__)-1===["BankTransferClient","BrebClient","PseClient","SwapClient"].indexOf(__rspack_i)&&(exports[__rspack_i]=__webpack_exports__[__rspack_i]);Object.defineProperty(exports,"__esModule",{value:!0});
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export { BankTransferClient } from './bank-transfer/bank-transfer-client';
2
- export type { BankAccountType, BankDepositInformation, CreateBankTransferOrderParams, CreateBankTransferOrderResult, ExecutionHow, ExecutionResult, IdentificationType, KusamaAccountArgs, OrderType, SupportedBank, SwapOrder, } from './bank-transfer/types';
2
+ export type { BankAccountType, BankDepositInformation, CreateBankTransferOrderOptions, CreateBankTransferOrderParams, CreateBankTransferOrderResult, ExecutionHow, ExecutionResult, IdentificationType, KusamaAccountArgs, OrderType, SupportedBank, SwapOrder, } from './bank-transfer/types';
3
3
  export { BrebClient } from './breb/breb-client';
4
- export type { BrebDepositInformation, BrebSwapArgs, CreateBrebOrderParams, CreateBrebOrderResult, } from './breb/types';
4
+ export type { BrebDepositInformation, BrebSwapArgs, CreateBrebOrderOptions, CreateBrebOrderParams, CreateBrebOrderResult, } from './breb/types';
5
5
  export { PseClient } from './pse/pse-client';
6
- export type { Bank, CreatePseOrderParams, CreatePseOrderResult, DepositInformation, ListBanksResult, PseCustomerData, PsePaymentArgs, } from './pse/types';
6
+ export type { Bank, CreatePseOrderOptions, CreatePseOrderParams, CreatePseOrderResult, DepositInformation, ListBanksResult, PseCustomerData, PsePaymentArgs, } from './pse/types';
7
7
  export { SwapClient } from './swap-client';
8
8
  export type { Fee, FeeComponent, FeeComponentType, FindRatesParams, FindRatesResult, ListOrdersParams, ListOrdersResult, OrderStatus, RateLimits, RateTuple, SwapRate, } from './types';
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{BaseClient as t,BloqueConfigError as e}from"@bloque/sdk-core";class a extends t{async create(t){let a=this.httpClient.urn;if(!a)throw new e("User URN is not available. Please connect to a session first.");let r=t.type??"src",s={taker_urn:a,type:r,rate_sig:t.rateSig,from_medium:"kusama",to_medium:t.toMedium,webhook_url:t.webhookUrl,deposit_information:this._mapDepositInformationToWire(t.depositInformation)};"src"===r&&t.amountSrc?s.amount_src=t.amountSrc:"dst"===r&&t.amountDst&&(s.amount_dst=t.amountDst),t.args&&(s.args={account_urn:t.args.sourceAccountUrn}),t.nodeId&&(s.node_id=t.nodeId),t.metadata&&(s.metadata=t.metadata);let o=await this.httpClient.request({method:"PUT",path:"/api/order",body:s});return{order:this._mapOrderResponse(o.result.order),execution:o.result.execution?this._mapExecutionResult(o.result.execution):void 0,requestId:o.req_id}}_mapDepositInformationToWire(t){return{bank_account_type:t.bankAccountType,bank_account_number:t.bankAccountNumber,bank_account_holder_name:t.bankAccountHolderName,bank_account_holder_identification_type:t.bankAccountHolderIdentificationType,bank_account_holder_identification_value:t.bankAccountHolderIdentificationValue}}_mapOrderResponse(t){return{id:t.id,orderSig:t.order_sig,rateSig:t.rate_sig,swapSig:t.swap_sig,taker:t.taker,maker:t.maker,fromAsset:t.from_asset,toAsset:t.to_asset,fromMedium:t.from_medium,toMedium:t.to_medium,fromAmount:t.from_amount,toAmount:t.to_amount,at:t.at,graphId:t.graph_id,status:t.status,metadata:t.metadata,webhookUrl:t.webhook_url,failureReason:t.failure_reason,failureDetails:t.failure_details,createdAt:t.created_at,updatedAt:t.updated_at}}_mapExecutionResult(t){return{nodeId:t.node_id,result:{status:t.result.status,name:t.result.name,description:t.result.description,how:t.result.how,callbackToken:t.result.callback_token}}}}class r extends t{async create(t){let a=this.httpClient.urn;if(!a)throw new e("User URN is not available. Please connect to a session first.");let r=t.type??"src",s={taker_urn:a,type:r,rate_sig:t.rateSig,from_medium:"kusama",to_medium:"breb",webhook_url:t.webhookUrl,deposit_information:this._mapDepositInformationToWire(t.depositInformation),args:{account_urn:t.args.sourceAccountUrn}};"src"===r&&t.amountSrc?s.amount_src=t.amountSrc:"dst"===r&&t.amountDst&&(s.amount_dst=t.amountDst),t.nodeId&&(s.node_id=t.nodeId),t.metadata&&(s.metadata=t.metadata);let o=await this.httpClient.request({method:"PUT",path:"/api/order",body:s});return{order:this._mapOrderResponse(o.result.order),execution:o.result.execution?this._mapExecutionResult(o.result.execution):void 0,requestId:o.req_id}}_mapDepositInformationToWire(t){return{resolution_id:t.resolutionId}}_mapOrderResponse(t){return{id:t.id,orderSig:t.order_sig,rateSig:t.rate_sig,swapSig:t.swap_sig,taker:t.taker,maker:t.maker,fromAsset:t.from_asset,toAsset:t.to_asset,fromMedium:t.from_medium,toMedium:t.to_medium,fromAmount:t.from_amount,toAmount:t.to_amount,at:t.at,graphId:t.graph_id,status:t.status,metadata:t.metadata,createdAt:t.created_at,updatedAt:t.updated_at}}_mapExecutionResult(t){return{nodeId:t.node_id,result:{status:t.result.status,name:t.result.name,description:t.result.description,how:t.result.how,callbackToken:t.result.callback_token}}}}class s extends t{async banks(){return{banks:(await this.httpClient.request({method:"GET",path:"/api/utils/pse/banks"})).banks.map(t=>this._mapBankResponse(t))}}async create(t){let a=this.httpClient.urn;if(!a)throw new e("User URN is not available. Please connect to a session first.");let r=t.type??"src",s={taker_urn:a,type:r,rate_sig:t.rateSig,from_medium:"pse",to_medium:t.toMedium,webhook_url:t.webhookUrl,deposit_information:this._mapDepositInformationToWire(t.depositInformation)};"src"===r&&t.amountSrc?s.amount_src=t.amountSrc:"dst"===r&&t.amountDst&&(s.amount_dst=t.amountDst),t.args&&(s.args={bank_code:t.args.bankCode,user_type:t.args.userType,customer_email:t.args.customerEmail,user_legal_id_type:t.args.userLegalIdType,user_legal_id:t.args.userLegalId,...t.args.customerData&&{customer_data:{full_name:t.args.customerData.fullName,phone_number:t.args.customerData.phoneNumber}}}),t.nodeId&&(s.node_id=t.nodeId),t.metadata&&(s.metadata=t.metadata);let o=await this.httpClient.request({method:"PUT",path:"/api/order",body:s});return{order:this._mapOrderResponse(o.result.order),execution:o.result.execution?this._mapExecutionResult(o.result.execution):void 0,requestId:o.req_id}}_mapBankResponse(t){return{code:t.financial_institution_code,name:t.financial_institution_name}}_mapDepositInformationToWire(t){return{urn:t.urn}}_mapOrderResponse(t){return{id:t.id,orderSig:t.order_sig,rateSig:t.rate_sig,swapSig:t.swap_sig,taker:t.taker,maker:t.maker,fromAsset:t.from_asset,toAsset:t.to_asset,fromMedium:t.from_medium,toMedium:t.to_medium,fromAmount:t.from_amount,toAmount:t.to_amount,at:t.at,graphId:t.graph_id,status:t.status,metadata:t.metadata,createdAt:t.created_at,updatedAt:t.updated_at}}_mapExecutionResult(t){return{nodeId:t.node_id,result:{status:t.result.status,name:t.result.name,description:t.result.description,how:t.result.how,callbackToken:t.result.callback_token}}}}class o extends t{pse;bankTransfer;breb;constructor(t){super(t),this.pse=new s(this.httpClient),this.bankTransfer=new a(this.httpClient),this.breb=new r(this.httpClient)}async findRates(t){let e=new URLSearchParams,a=JSON.stringify([t.fromAsset,t.toAsset]);e.append("edge",a),e.append("from_medium",JSON.stringify(t.fromMediums)),e.append("to_medium",JSON.stringify(t.toMediums)),void 0!==t.amountSrc&&e.append("amount_src",t.amountSrc),void 0!==t.amountDst&&e.append("amount_dst",t.amountDst),t.sort&&e.append("sort",t.sort),t.sortBy&&e.append("sort_by",t.sortBy);let r=e.toString(),s=`/api/rates?${r}`;return{rates:(await this.httpClient.request({method:"GET",path:s})).rates.map(t=>this._mapRateResponse(t))}}async listOrders(t={}){let a=this.httpClient.urn;if(!a)throw new e("User URN is not available. Please connect to a session first.");let r=new URLSearchParams;t.orderSig&&r.set("order_sig",t.orderSig),t.swapSig&&r.set("swap_sig",t.swapSig),t.rateSig&&r.set("rate_sig",t.rateSig),t.makerUrn&&r.set("maker_urn",t.makerUrn),t.status&&r.set("status",t.status),t.graphId&&r.set("graph_id",t.graphId),void 0!==t.after&&r.set("after",t.after.toString()),void 0!==t.before&&r.set("before",t.before.toString());let s=r.toString(),o=`/api/order/taker/${a}${s?`?${s}`:""}`;return{orders:(await this.httpClient.request({method:"GET",path:o})).orders.map(t=>this._mapOrderResponse(t))}}_mapOrderResponse(t){return{id:t.id,orderSig:t.order_sig,rateSig:t.rate_sig,swapSig:t.swap_sig,taker:t.taker,maker:t.maker,fromAsset:t.from_asset,toAsset:t.to_asset,fromMedium:t.from_medium,toMedium:t.to_medium,fromAmount:t.from_amount,toAmount:t.to_amount,at:t.at,graphId:t.graph_id,status:t.status,metadata:t.metadata,webhookUrl:t.webhook_url,failureReason:t.failure_reason,failureDetails:t.failure_details,createdAt:t.created_at,updatedAt:t.updated_at}}_mapRateResponse(t){return{id:t.id,sig:t.sig,swapSig:t.swap_sig,maker:t.maker,edge:t.edge,fee:{at:t.fee.at,value:t.fee.value,formula:t.fee.formula,components:t.fee.components.map(t=>({at:t.at,name:t.name,type:t.type,value:t.value,percentage:t.percentage,pair:t.pair,amount:t.amount}))},at:t.at,until:t.until,fromMediums:t.from_medium,toMediums:t.to_medium,rate:t.rate,ratio:t.ratio,fromLimits:t.from_limits,toLimits:t.to_limits,createdAt:t.created_at,updatedAt:t.updated_at}}}export{a as BankTransferClient,r as BrebClient,s as PseClient,o as SwapClient};
1
+ import{BaseClient as e,BloqueConfigError as t}from"@bloque/sdk-core";class a extends e{async create(e,a){let r=this.httpClient.urn;if(!r)throw new t("User URN is not available. Please connect to a session first.");let s=e.type??"src",o={taker_urn:r,type:s,rate_sig:e.rateSig,from_medium:"kusama",to_medium:e.toMedium,webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation)};"src"===s&&e.amountSrc?o.amount_src=e.amountSrc:"dst"===s&&e.amountDst&&(o.amount_dst=e.amountDst),e.args&&(o.args={account_urn:e.args.sourceAccountUrn}),e.nodeId&&(o.node_id=e.nodeId),e.metadata&&(o.metadata=e.metadata);let i=await this.httpClient.request({method:"PUT",path:"/api/order",body:o,headers:a?.idempotencyKey?{"Idempotency-Key":a.idempotencyKey}:void 0});return{order:this._mapOrderResponse(i.result.order),execution:i.result.execution?this._mapExecutionResult(i.result.execution):void 0,requestId:i.req_id}}_mapDepositInformationToWire(e){return{bank_account_type:e.bankAccountType,bank_account_number:e.bankAccountNumber,bank_account_holder_name:e.bankAccountHolderName,bank_account_holder_identification_type:e.bankAccountHolderIdentificationType,bank_account_holder_identification_value:e.bankAccountHolderIdentificationValue}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,webhookUrl:e.webhook_url,failureReason:e.failure_reason,failureDetails:e.failure_details,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class r extends e{async create(e,a){let r=this.httpClient.urn;if(!r)throw new t("User URN is not available. Please connect to a session first.");let s=e.type??"src",o={taker_urn:r,type:s,rate_sig:e.rateSig,from_medium:"kusama",to_medium:"breb",webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation),args:{account_urn:e.args.sourceAccountUrn}};"src"===s&&e.amountSrc?o.amount_src=e.amountSrc:"dst"===s&&e.amountDst&&(o.amount_dst=e.amountDst),e.nodeId&&(o.node_id=e.nodeId),e.metadata&&(o.metadata=e.metadata);let i=await this.httpClient.request({method:"PUT",path:"/api/order",body:o,headers:a?.idempotencyKey?{"Idempotency-Key":a.idempotencyKey}:void 0});return{order:this._mapOrderResponse(i.result.order),execution:i.result.execution?this._mapExecutionResult(i.result.execution):void 0,requestId:i.req_id}}_mapDepositInformationToWire(e){return{resolution_id:e.resolutionId}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class s extends e{async banks(){return{banks:(await this.httpClient.request({method:"GET",path:"/api/utils/pse/banks"})).banks.map(e=>this._mapBankResponse(e))}}async create(e,a){let r=this.httpClient.urn;if(!r)throw new t("User URN is not available. Please connect to a session first.");let s=e.type??"src",o={taker_urn:r,type:s,rate_sig:e.rateSig,from_medium:"pse",to_medium:e.toMedium,webhook_url:e.webhookUrl,deposit_information:this._mapDepositInformationToWire(e.depositInformation)};"src"===s&&e.amountSrc?o.amount_src=e.amountSrc:"dst"===s&&e.amountDst&&(o.amount_dst=e.amountDst),e.args&&(o.args={bank_code:e.args.bankCode,user_type:e.args.userType,customer_email:e.args.customerEmail,user_legal_id_type:e.args.userLegalIdType,user_legal_id:e.args.userLegalId,...e.args.customerData&&{customer_data:{full_name:e.args.customerData.fullName,phone_number:e.args.customerData.phoneNumber}}}),e.nodeId&&(o.node_id=e.nodeId),e.metadata&&(o.metadata=e.metadata);let i=await this.httpClient.request({method:"PUT",path:"/api/order",body:o,headers:a?.idempotencyKey?{"Idempotency-Key":a.idempotencyKey}:void 0});return{order:this._mapOrderResponse(i.result.order),execution:i.result.execution?this._mapExecutionResult(i.result.execution):void 0,requestId:i.req_id}}_mapBankResponse(e){return{code:e.financial_institution_code,name:e.financial_institution_name}}_mapDepositInformationToWire(e){return{urn:e.urn}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,createdAt:e.created_at,updatedAt:e.updated_at}}_mapExecutionResult(e){return{nodeId:e.node_id,result:{status:e.result.status,name:e.result.name,description:e.result.description,how:e.result.how,callbackToken:e.result.callback_token}}}}class o extends e{pse;bankTransfer;breb;constructor(e){super(e),this.pse=new s(this.httpClient),this.bankTransfer=new a(this.httpClient),this.breb=new r(this.httpClient)}async findRates(e){let t=new URLSearchParams,a=JSON.stringify([e.fromAsset,e.toAsset]);t.append("edge",a),t.append("from_medium",JSON.stringify(e.fromMediums)),t.append("to_medium",JSON.stringify(e.toMediums)),void 0!==e.amountSrc&&t.append("amount_src",e.amountSrc),void 0!==e.amountDst&&t.append("amount_dst",e.amountDst),e.sort&&t.append("sort",e.sort),e.sortBy&&t.append("sort_by",e.sortBy);let r=t.toString(),s=`/api/rates?${r}`;return{rates:(await this.httpClient.request({method:"GET",path:s})).rates.map(e=>this._mapRateResponse(e))}}async listOrders(e={}){let a=this.httpClient.urn;if(!a)throw new t("User URN is not available. Please connect to a session first.");let r=new URLSearchParams;e.orderSig&&r.set("order_sig",e.orderSig),e.swapSig&&r.set("swap_sig",e.swapSig),e.rateSig&&r.set("rate_sig",e.rateSig),e.makerUrn&&r.set("maker_urn",e.makerUrn),e.status&&r.set("status",e.status),e.graphId&&r.set("graph_id",e.graphId),void 0!==e.after&&r.set("after",e.after.toString()),void 0!==e.before&&r.set("before",e.before.toString());let s=r.toString(),o=`/api/order/taker/${a}${s?`?${s}`:""}`;return{orders:(await this.httpClient.request({method:"GET",path:o})).orders.map(e=>this._mapOrderResponse(e))}}async cancelSubscription(e){let t=await this.httpClient.request({method:"POST",path:`/api/order/${e.orderId}/cancel-subscription`});return{status:t.result.status,cursor:t.result.cursor,orderId:t.result.order_id,graphId:t.result.graph_id}}_mapOrderResponse(e){return{id:e.id,orderSig:e.order_sig,rateSig:e.rate_sig,swapSig:e.swap_sig,taker:e.taker,maker:e.maker,fromAsset:e.from_asset,toAsset:e.to_asset,fromMedium:e.from_medium,toMedium:e.to_medium,fromAmount:e.from_amount,toAmount:e.to_amount,at:e.at,graphId:e.graph_id,status:e.status,metadata:e.metadata,webhookUrl:e.webhook_url,failureReason:e.failure_reason,failureDetails:e.failure_details,createdAt:e.created_at,updatedAt:e.updated_at}}_mapRateResponse(e){return{id:e.id,sig:e.sig,swapSig:e.swap_sig,maker:e.maker,edge:e.edge,fee:{at:e.fee.at,value:e.fee.value,formula:e.fee.formula,components:e.fee.components.map(e=>({at:e.at,name:e.name,type:e.type,value:e.value,percentage:e.percentage,pair:e.pair,amount:e.amount}))},at:e.at,until:e.until,fromMediums:e.from_medium,toMediums:e.to_medium,rate:e.rate,ratio:e.ratio,fromLimits:e.from_limits,toLimits:e.to_limits,createdAt:e.created_at,updatedAt:e.updated_at}}}export{a as BankTransferClient,r as BrebClient,s as PseClient,o as SwapClient};
@@ -181,3 +181,16 @@ export interface CreateOrderResponse {
181
181
  };
182
182
  req_id: string;
183
183
  }
184
+ /**
185
+ * @internal
186
+ * Cancel subscription response from API.
187
+ */
188
+ export interface CancelSubscriptionResponse {
189
+ result: {
190
+ status: 'cancellation_pending' | 'already_cancelled' | 'graph_done';
191
+ cursor: number | null;
192
+ order_id: string;
193
+ graph_id: string;
194
+ };
195
+ req_id: string;
196
+ }
@@ -1,5 +1,5 @@
1
1
  import { BaseClient } from '@bloque/sdk-core';
2
- import type { CreatePseOrderParams, CreatePseOrderResult, ListBanksResult } from './types';
2
+ import type { CreatePseOrderOptions, CreatePseOrderParams, CreatePseOrderResult, ListBanksResult } from './types';
3
3
  /**
4
4
  * PSE client for PSE-related utilities
5
5
  *
@@ -44,24 +44,27 @@ export declare class PseClient extends BaseClient {
44
44
  * });
45
45
  *
46
46
  * // Create order with auto-execution
47
- * const result = await bloque.swap.pse.create({
48
- * rateSig: rates.rates[0].sig,
49
- * toMedium: 'kusama',
50
- * amountSrc: '10000000',
51
- * depositInformation: {
52
- * urn: 'did:bloque:account:card:usr-xxx:crd-xxx'
53
- * },
54
- * args: {
55
- * bankCode: '1',
56
- * userType: 'natural',
57
- * customerEmail: 'user@example.com',
58
- * userLegalIdType: 'CC',
59
- * userLegalId: '1234567890',
60
- * customerData: {
61
- * fullName: 'John Doe'
47
+ * const result = await bloque.swap.pse.create(
48
+ * {
49
+ * rateSig: rates.rates[0].sig,
50
+ * toMedium: 'kusama',
51
+ * amountSrc: '10000000',
52
+ * depositInformation: {
53
+ * urn: 'did:bloque:account:card:usr-xxx:crd-xxx'
54
+ * },
55
+ * args: {
56
+ * bankCode: '1',
57
+ * userType: 'natural',
58
+ * customerEmail: 'user@example.com',
59
+ * userLegalIdType: 'CC',
60
+ * userLegalId: '1234567890',
61
+ * customerData: {
62
+ * fullName: 'John Doe'
63
+ * }
62
64
  * }
63
- * }
64
- * });
65
+ * },
66
+ * { idempotencyKey: 'pse-order-10000000' }
67
+ * );
65
68
  *
66
69
  * // If execution returned a checkout URL, redirect user
67
70
  * if (result.execution?.result.checkoutUrl) {
@@ -69,7 +72,7 @@ export declare class PseClient extends BaseClient {
69
72
  * }
70
73
  * ```
71
74
  */
72
- create(params: CreatePseOrderParams): Promise<CreatePseOrderResult>;
75
+ create(params: CreatePseOrderParams, options?: CreatePseOrderOptions): Promise<CreatePseOrderResult>;
73
76
  /**
74
77
  * Maps API bank response to SDK format
75
78
  * @internal
@@ -111,6 +111,12 @@ export interface CreatePseOrderParams {
111
111
  */
112
112
  metadata?: Record<string, unknown>;
113
113
  }
114
+ export interface CreatePseOrderOptions {
115
+ /**
116
+ * Optional custom idempotency key sent as `Idempotency-Key` header.
117
+ */
118
+ idempotencyKey?: string;
119
+ }
114
120
  /**
115
121
  * Result of creating a PSE swap order
116
122
  */
@@ -3,7 +3,7 @@ import { BaseClient } from '@bloque/sdk-core';
3
3
  import { BankTransferClient } from './bank-transfer/bank-transfer-client';
4
4
  import { BrebClient } from './breb/breb-client';
5
5
  import { PseClient } from './pse/pse-client';
6
- import type { FindRatesParams, FindRatesResult, ListOrdersParams, ListOrdersResult } from './types';
6
+ import type { CancelSubscriptionParams, CancelSubscriptionResult, FindRatesParams, FindRatesResult, ListOrdersParams, ListOrdersResult } from './types';
7
7
  /**
8
8
  * Swap client for finding exchange rates
9
9
  *
@@ -57,6 +57,13 @@ export declare class SwapClient extends BaseClient {
57
57
  * ```
58
58
  */
59
59
  listOrders(params?: ListOrdersParams): Promise<ListOrdersResult>;
60
+ /**
61
+ * Cancel a recurring subscription created via recurring-card graphs.
62
+ *
63
+ * This sets a cancellation flag on the underlying instruction graph so future
64
+ * occurrences stop. In-flight occurrences are not interrupted.
65
+ */
66
+ cancelSubscription(params: CancelSubscriptionParams): Promise<CancelSubscriptionResult>;
60
67
  /**
61
68
  * Maps API order response to SDK format
62
69
  * @internal
package/dist/types.d.ts CHANGED
@@ -167,3 +167,16 @@ export interface ListOrdersParams {
167
167
  export interface ListOrdersResult {
168
168
  orders: import('./bank-transfer/types').SwapOrder[];
169
169
  }
170
+ export interface CancelSubscriptionParams {
171
+ /**
172
+ * Order signature (`order_sig`) of the recurring subscription.
173
+ */
174
+ orderId: string;
175
+ }
176
+ export type CancelSubscriptionStatus = 'cancellation_pending' | 'already_cancelled' | 'graph_done';
177
+ export interface CancelSubscriptionResult {
178
+ status: CancelSubscriptionStatus;
179
+ cursor: number | null;
180
+ orderId: string;
181
+ graphId: string;
182
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bloque/sdk-swap",
3
- "version": "0.1.4",
3
+ "version": "0.1.6",
4
4
  "type": "module",
5
5
  "keywords": [
6
6
  "bloque",
@@ -34,6 +34,6 @@
34
34
  "node": ">=22"
35
35
  },
36
36
  "dependencies": {
37
- "@bloque/sdk-core": "0.1.4"
37
+ "@bloque/sdk-core": "0.1.6"
38
38
  }
39
39
  }