summaryrefslogtreecommitdiff
path: root/packages/taler-util/src/walletTypes.ts
diff options
context:
space:
mode:
authorFlorian Dold <florian@dold.me>2022-08-23 11:29:45 +0200
committerFlorian Dold <florian@dold.me>2022-08-23 20:35:11 +0200
commitf3ff5a72257dda27cab555f8b8d921d45bfc3e4b (patch)
tree708494a3aa2346fead51931fe4bfc41cc0249659 /packages/taler-util/src/walletTypes.ts
parent4ca38113abee2c0ca17b26aa55cf6a0ecafe49c9 (diff)
downloadwallet-core-f3ff5a72257dda27cab555f8b8d921d45bfc3e4b.tar.gz
wallet-core-f3ff5a72257dda27cab555f8b8d921d45bfc3e4b.tar.bz2
wallet-core-f3ff5a72257dda27cab555f8b8d921d45bfc3e4b.zip
peer-to-peer pull payments MVP
p2p pull wip
Diffstat (limited to 'packages/taler-util/src/walletTypes.ts')
-rw-r--r--packages/taler-util/src/walletTypes.ts81
1 files changed, 65 insertions, 16 deletions
diff --git a/packages/taler-util/src/walletTypes.ts b/packages/taler-util/src/walletTypes.ts
index 7b482c60e..3a415b221 100644
--- a/packages/taler-util/src/walletTypes.ts
+++ b/packages/taler-util/src/walletTypes.ts
@@ -627,7 +627,7 @@ export interface ExchangeAccount {
master_sig: string;
}
-export type WireFeeMap = { [wireMethod: string]: WireFee[] }
+export type WireFeeMap = { [wireMethod: string]: WireFee[] };
export interface WireInfo {
feesForType: WireFeeMap;
accounts: ExchangeAccount[];
@@ -639,7 +639,6 @@ const codecForExchangeAccount = (): Codec<ExchangeAccount> =>
.property("master_sig", codecForString())
.build("codecForExchangeAccount");
-
const codecForWireFee = (): Codec<WireFee> =>
buildCodecForObject<WireFee>()
.property("sig", codecForString())
@@ -658,19 +657,18 @@ const codecForWireInfo = (): Codec<WireInfo> =>
const codecForDenominationInfo = (): Codec<DenominationInfo> =>
buildCodecForObject<DenominationInfo>()
- .property("denomPubHash", (codecForString()))
- .property("value", (codecForAmountJson()))
- .property("feeWithdraw", (codecForAmountJson()))
- .property("feeDeposit", (codecForAmountJson()))
- .property("feeRefresh", (codecForAmountJson()))
- .property("feeRefund", (codecForAmountJson()))
- .property("stampStart", (codecForTimestamp))
- .property("stampExpireWithdraw", (codecForTimestamp))
- .property("stampExpireLegal", (codecForTimestamp))
- .property("stampExpireDeposit", (codecForTimestamp))
+ .property("denomPubHash", codecForString())
+ .property("value", codecForAmountJson())
+ .property("feeWithdraw", codecForAmountJson())
+ .property("feeDeposit", codecForAmountJson())
+ .property("feeRefresh", codecForAmountJson())
+ .property("feeRefund", codecForAmountJson())
+ .property("stampStart", codecForTimestamp)
+ .property("stampExpireWithdraw", codecForTimestamp)
+ .property("stampExpireLegal", codecForTimestamp)
+ .property("stampExpireDeposit", codecForTimestamp)
.build("codecForDenominationInfo");
-
export interface DenominationInfo {
value: AmountJson;
denomPubHash: string;
@@ -713,7 +711,6 @@ export interface DenominationInfo {
* Data after which coins of this denomination can't be deposited anymore.
*/
stampExpireDeposit: TalerProtocolTimestamp;
-
}
export interface ExchangeListItem {
@@ -726,7 +723,6 @@ export interface ExchangeListItem {
denominations: DenominationInfo[];
}
-
const codecForAuditorDenomSig = (): Codec<AuditorDenomSig> =>
buildCodecForObject<AuditorDenomSig>()
.property("denom_pub_h", codecForString())
@@ -740,7 +736,6 @@ const codecForExchangeAuditor = (): Codec<ExchangeAuditor> =>
.property("denomination_keys", codecForList(codecForAuditorDenomSig()))
.build("codecForExchangeAuditor");
-
const codecForExchangeTos = (): Codec<ExchangeTos> =>
buildCodecForObject<ExchangeTos>()
.property("acceptedVersion", codecOptional(codecForString()))
@@ -1452,18 +1447,34 @@ export interface CheckPeerPushPaymentRequest {
talerUri: string;
}
+export interface CheckPeerPullPaymentRequest {
+ talerUri: string;
+}
+
export interface CheckPeerPushPaymentResponse {
contractTerms: any;
amount: AmountString;
peerPushPaymentIncomingId: string;
}
+export interface CheckPeerPullPaymentResponse {
+ contractTerms: any;
+ amount: AmountString;
+ peerPullPaymentIncomingId: string;
+}
+
export const codecForCheckPeerPushPaymentRequest =
(): Codec<CheckPeerPushPaymentRequest> =>
buildCodecForObject<CheckPeerPushPaymentRequest>()
.property("talerUri", codecForString())
.build("CheckPeerPushPaymentRequest");
+export const codecForCheckPeerPullPaymentRequest =
+ (): Codec<CheckPeerPullPaymentRequest> =>
+ buildCodecForObject<CheckPeerPullPaymentRequest>()
+ .property("talerUri", codecForString())
+ .build("CheckPeerPullPaymentRequest");
+
export interface AcceptPeerPushPaymentRequest {
/**
* Transparent identifier of the incoming peer push payment.
@@ -1476,3 +1487,41 @@ export const codecForAcceptPeerPushPaymentRequest =
buildCodecForObject<AcceptPeerPushPaymentRequest>()
.property("peerPushPaymentIncomingId", codecForString())
.build("AcceptPeerPushPaymentRequest");
+
+export interface AcceptPeerPullPaymentRequest {
+ /**
+ * Transparent identifier of the incoming peer pull payment.
+ */
+ peerPullPaymentIncomingId: string;
+}
+
+export const codecForAcceptPeerPullPaymentRequest =
+ (): Codec<AcceptPeerPullPaymentRequest> =>
+ buildCodecForObject<AcceptPeerPullPaymentRequest>()
+ .property("peerPullPaymentIncomingId", codecForString())
+ .build("AcceptPeerPllPaymentRequest");
+
+export interface InitiatePeerPullPaymentRequest {
+ /**
+ * FIXME: Make this optional?
+ */
+ exchangeBaseUrl: string;
+ amount: AmountString;
+ partialContractTerms: any;
+}
+
+export const codecForInitiatePeerPullPaymentRequest =
+ (): Codec<InitiatePeerPullPaymentRequest> =>
+ buildCodecForObject<InitiatePeerPullPaymentRequest>()
+ .property("partialContractTerms", codecForAny())
+ .property("amount", codecForAmountString())
+ .property("exchangeBaseUrl", codecForAmountString())
+ .build("InitiatePeerPullPaymentRequest");
+
+export interface InitiatePeerPullPaymentResponse {
+ /**
+ * Taler URI for the other party to make the payment
+ * that was requested.
+ */
+ talerUri: string;
+}