Skip to content

Commit

Permalink
WIP: add toPre163 function to post-163 classes --wip-- [skip ci]
Browse files Browse the repository at this point in the history
  • Loading branch information
maxpolizzo committed Jun 1, 2023
1 parent 69d1f1d commit f7e383d
Show file tree
Hide file tree
Showing 26 changed files with 668 additions and 15 deletions.
10 changes: 10 additions & 0 deletions packages/messaging/lib/messages/CetAdaptorSignatures.ts
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,16 @@ export class CetAdaptorSignatures implements IDlcMessage {
return instance;
}

public static toPre163(
cetSignatures: CetAdaptorSignatures,
): CetAdaptorSignaturesV0Pre163 {
const instance = new CetAdaptorSignaturesV0Pre163();

instance.sigs = cetSignatures.sigs;

return instance;
}

/**
* The type for cet_adaptor_signature message. cet_adaptor_signature = 42774
*/
Expand Down
49 changes: 47 additions & 2 deletions packages/messaging/lib/messages/ContractDescriptor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ export abstract class ContractDescriptor {
}
}

public static from163(
public static fromPre163(
contractDescriptor: ContractDescriptorPre163,
): ContractDescriptor {
if (contractDescriptor instanceof ContractDescriptorV0Pre163) {
Expand All @@ -49,6 +49,20 @@ export abstract class ContractDescriptor {
}
}

public static toPre163(
contractDescriptor: ContractDescriptor,
): ContractDescriptorPre163 {
if (contractDescriptor instanceof EnumeratedContractDescriptor) {
return EnumeratedContractDescriptor.toPre163(contractDescriptor);
} else if (contractDescriptor instanceof NumericContractDescriptor) {
return NumericContractDescriptor.toPre163(contractDescriptor);
} else {
throw new Error(
'Contract Descriptor must be EnumeratedContractDescriptor or NumericContractDescriptor',
);
}
}

public abstract type: number;

public abstract toJSON():
Expand Down Expand Up @@ -114,6 +128,21 @@ export class EnumeratedContractDescriptor
return instance;
}

public static toPre163(
contractDescriptor: EnumeratedContractDescriptor,
): ContractDescriptorV0Pre163 {
const instance = new ContractDescriptorV0Pre163();

instance.outcomes = contractDescriptor.outcomes.map((outcome) => {
return {
outcome: Buffer.from(outcome.outcome, 'utf-8'),
localPayout: outcome.localPayout,
};
});

return instance;
}

/**
* The type for enumerated_contract_descriptor message
*/
Expand Down Expand Up @@ -201,7 +230,23 @@ export class NumericContractDescriptor
instance.payoutFunction = PayoutFunction.fromPre163(
contractDescriptor.payoutFunction,
);
instance.roundingIntervals = RoundingIntervals.from163(
instance.roundingIntervals = RoundingIntervals.fromPre163(
contractDescriptor.roundingIntervals,
);

return instance;
}

public static toPre163(
contractDescriptor: NumericContractDescriptor,
): ContractDescriptorV1Pre163 {
const instance = new ContractDescriptorV1Pre163();

instance.numDigits = contractDescriptor.numDigits;
instance.payoutFunction = PayoutFunction.toPre163(
contractDescriptor.payoutFunction,
);
instance.roundingIntervals = RoundingIntervals.toPre163(
contractDescriptor.roundingIntervals,
);

Expand Down
51 changes: 49 additions & 2 deletions packages/messaging/lib/messages/ContractInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,20 @@ export abstract class ContractInfo implements IDlcMessage {
}
}

public static toPre163(
contractInfo: ContractInfo,
): ContractInfoV0Pre163 | ContractInfoV1Pre163 {
if (contractInfo instanceof SingleContractInfo) {
return SingleContractInfo.toPre163(contractInfo);
} else if (contractInfo instanceof DisjointContractInfo) {
return DisjointContractInfo.toPre163(contractInfo);
} else {
throw new Error(
'ContractInfo must be SingleContractInfo or DisjointContractInfo',
);
}
}

public abstract type: number;

public abstract totalCollateral: bigint;
Expand Down Expand Up @@ -109,14 +123,28 @@ export class SingleContractInfo extends ContractInfo implements IDlcMessage {
const instance = new SingleContractInfo();

instance.totalCollateral = contractInfo.totalCollateral;
instance.contractDescriptor = ContractDescriptor.from163(
instance.contractDescriptor = ContractDescriptor.fromPre163(
contractInfo.contractDescriptor,
);
instance.oracleInfo = OracleInfo.fromPre163(contractInfo.oracleInfo);

return instance;
}

public static toPre163(
contractInfo: SingleContractInfo,
): ContractInfoV0Pre163 {
const instance = new ContractInfoV0Pre163();

instance.totalCollateral = contractInfo.totalCollateral;
instance.contractDescriptor = ContractDescriptor.toPre163(
contractInfo.contractDescriptor,
);
instance.oracleInfo = OracleInfo.toPre163(contractInfo.oracleInfo);

return instance;
}

/**
* The type for single_contract_info message.
*/
Expand Down Expand Up @@ -273,7 +301,7 @@ export class DisjointContractInfo implements IDlcMessage {

contractInfo.contractOraclePairs.forEach((oraclePair) => {
instance.contractOraclePairs.push({
contractDescriptor: ContractDescriptor.from163(
contractDescriptor: ContractDescriptor.fromPre163(
oraclePair.contractDescriptor,
),
oracleInfo: OracleInfo.fromPre163(oraclePair.oracleInfo),
Expand All @@ -283,6 +311,25 @@ export class DisjointContractInfo implements IDlcMessage {
return instance;
}

public static toPre163(
contractInfo: DisjointContractInfo,
): ContractInfoV1Pre163 {
const instance = new ContractInfoV1Pre163();

instance.totalCollateral = contractInfo.totalCollateral;

contractInfo.contractOraclePairs.forEach((oraclePair) => {
instance.contractOraclePairs.push({
contractDescriptor: ContractDescriptor.toPre163(
oraclePair.contractDescriptor,
),
oracleInfo: OracleInfo.toPre163(oraclePair.oracleInfo),
});
});

return instance;
}

/**
* The type for contract_info_v1 message. contract_info_v0 = 55342
*/
Expand Down
24 changes: 24 additions & 0 deletions packages/messaging/lib/messages/DlcAccept.ts
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,30 @@ export class DlcAcceptV0 extends DlcAccept implements IDlcMessage {
return instance;
}

public static toPre163(accept: DlcAcceptV0): DlcAcceptV0Pre163 {
const instance = new DlcAcceptV0Pre163();

instance.tempContractId = accept.temporaryContractId;
instance.acceptCollateralSatoshis = accept.acceptCollateral;
instance.fundingPubKey = accept.fundingPubKey;
instance.payoutSPK = accept.payoutSPK;
instance.payoutSerialId = accept.payoutSerialId;
instance.fundingInputs = accept.fundingInputs.map((input) =>
FundingInput.toPre163(input),
);
instance.changeSPK = accept.changeSPK;
instance.changeSerialId = accept.changeSerialId;
instance.cetSignatures = CetAdaptorSignatures.toPre163(
accept.cetSignatures,
);
instance.refundSignature = accept.refundSignature;
instance.negotiationFields = NegotiationFields.toPre163(
accept.negotiationFields,
);

return instance;
}

/**
* The type for accept_channel message. accept_channel = 33
*/
Expand Down
19 changes: 19 additions & 0 deletions packages/messaging/lib/messages/DlcCancel.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import assert from 'assert';

import { MessageType } from '../MessageType';
import { IDlcMessage } from './DlcMessage';
import { DlcCancelV0Pre163 } from './pre-163/DlcCancel';

export abstract class DlcCancel {
public static deserialize(reader: Buffer | BufferReader): DlcCancelV0 {
Expand Down Expand Up @@ -50,6 +51,24 @@ export class DlcCancelV0 extends DlcCancel implements IDlcMessage {
return instance;
}

public static fromPre163(cancel: DlcCancelV0Pre163): DlcCancelV0 {
const instance = new DlcCancelV0();

instance.contractId = cancel.contractId;
instance.cancelType = cancel.cancelType;

return instance;
}

public static toPre163(cancel: DlcCancelV0): DlcCancelV0Pre163 {
const instance = new DlcCancelV0Pre163();

instance.contractId = cancel.contractId;
instance.cancelType = cancel.cancelType;

return instance;
}

/**
* The type for cancel_dlc_v0 message. cancel_dlc_v0 = 52172
*/
Expand Down
37 changes: 37 additions & 0 deletions packages/messaging/lib/messages/DlcClose.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import { FundingInput, IFundingInputJSON } from './FundingInput';
import { FundingSignatures, IFundingSignaturesJSON } from './FundingSignatures';
import { getTlv } from "../serialize/getTlv";
import { deserializeTlv, ITlv, serializeTlv } from "../serialize/deserializeTlv";
import { DlcCloseV0Pre163 } from "./pre-163/DlcClose";

export abstract class DlcClose {
public static deserialize(reader: Buffer | BufferReader): DlcCloseV0 {
Expand Down Expand Up @@ -71,6 +72,42 @@ export class DlcCloseV0 extends DlcClose implements IDlcMessage {
return instance;
}

public static fromPre163(cancel: DlcCloseV0Pre163): DlcCloseV0 {
const instance = new DlcCloseV0();

instance.contractId = cancel.contractId;
instance.closeSignature = cancel.closeSignature;
instance.offerPayoutSatoshis = cancel.offerPayoutSatoshis;
instance.acceptPayoutSatoshis = cancel.acceptPayoutSatoshis;
instance.fundInputSerialId = cancel.fundInputSerialId;
cancel.fundingInputs.forEach((fundingInput) => {
instance.fundingInputs.push(FundingInput.fromPre163(fundingInput));
});
instance.fundingSignatures = FundingSignatures.fromPre163(
cancel.fundingSignatures,
);

return instance;
}

public static toPre163(cancel: DlcCloseV0): DlcCloseV0Pre163 {
const instance = new DlcCloseV0Pre163();

instance.contractId = cancel.contractId;
instance.closeSignature = cancel.closeSignature;
instance.offerPayoutSatoshis = cancel.offerPayoutSatoshis;
instance.acceptPayoutSatoshis = cancel.acceptPayoutSatoshis;
instance.fundInputSerialId = cancel.fundInputSerialId;
cancel.fundingInputs.forEach((fundingInput) => {
instance.fundingInputs.push(FundingInput.toPre163(fundingInput));
});
instance.fundingSignatures = FundingSignatures.toPre163(
cancel.fundingSignatures,
);

return instance;
}

/**
* The type for close_dlc_v0 message. close_dlc_v0 = 52170 // TODO
*/
Expand Down
27 changes: 27 additions & 0 deletions packages/messaging/lib/messages/DlcInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ import assert from 'assert';

import { MessageType } from '../MessageType';
import { IDlcMessage } from './DlcMessage';
import { DlcInfoV0Pre163 } from './pre-163/DlcInfo';

export abstract class DlcInfo {
public static deserialize(reader: Buffer | BufferReader): DlcInfoV0 {
Expand Down Expand Up @@ -52,6 +53,32 @@ export class DlcInfoV0 extends DlcInfo implements IDlcMessage {
return instance;
}

public static fromPre163(cancel: DlcInfoV0Pre163): DlcInfoV0 {
const instance = new DlcInfoV0();

instance.numDlcOffers = cancel.numDlcOffers;
instance.numDlcAccepts = cancel.numDlcAccepts;
instance.numDlcSigns = cancel.numDlcSigns;
instance.numDlcCancels = cancel.numDlcCancels;
instance.numDlcCloses = cancel.numDlcCloses;
instance.numDlcTransactions = cancel.numDlcTransactions;

return instance;
}

public static toPre163(cancel: DlcInfoV0): DlcInfoV0Pre163 {
const instance = new DlcInfoV0Pre163();

instance.numDlcOffers = cancel.numDlcOffers;
instance.numDlcAccepts = cancel.numDlcAccepts;
instance.numDlcSigns = cancel.numDlcSigns;
instance.numDlcCancels = cancel.numDlcCancels;
instance.numDlcCloses = cancel.numDlcCloses;
instance.numDlcTransactions = cancel.numDlcTransactions;

return instance;
}

/**
* The type for dlc_info_v0 message
*/
Expand Down
23 changes: 23 additions & 0 deletions packages/messaging/lib/messages/DlcOffer.ts
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,29 @@ export class DlcOfferV0 extends DlcOffer implements IDlcMessage {
return instance;
}

public static toPre163(offer: DlcOfferV0): DlcOfferV0Pre163 {
const instance = new DlcOfferV0Pre163();

instance.contractFlags = Buffer.from(offer.contractFlags.toString());
instance.chainHash = offer.chainHash;
instance.contractInfo = ContractInfo.toPre163(offer.contractInfo);
instance.fundingPubKey = offer.fundingPubKey;
instance.payoutSPK = offer.payoutSPK;
instance.payoutSerialId = offer.payoutSerialId;
instance.offerCollateralSatoshis = offer.offerCollateral;
instance.fundingInputs = offer.fundingInputs.map((input) =>
FundingInput.toPre163(input),
);
instance.changeSPK = offer.changeSPK;
instance.changeSerialId = offer.changeSerialId;
instance.fundOutputSerialId = offer.fundOutputSerialId;
instance.feeRatePerVb = offer.feeRatePerVb;
instance.cetLocktime = offer.cetLocktime;
instance.refundLocktime = offer.refundLocktime;

return instance;
}

/**
* The type for offer_dlc_v0 message. offer_dlc_v0 = 42778
*/
Expand Down
15 changes: 15 additions & 0 deletions packages/messaging/lib/messages/DlcSign.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,21 @@ export class DlcSignV0 extends DlcSign implements IDlcMessage {
return instance;
}

public static toPre163(sign: DlcSignV0): DlcSignV0Pre163 {
const instance = new DlcSignV0Pre163();

instance.contractId = sign.contractId;
instance.cetSignatures = CetAdaptorSignatures.toPre163(
sign.cetSignatures,
);
instance.refundSignature = sign.refundSignature;
instance.fundingSignatures = FundingSignatures.toPre163(
sign.fundingSignatures,
);

return instance;
}

/**
* The type for sign_dlc_v0 message. sign_dlc_v0 = 42782
*/
Expand Down
Loading

0 comments on commit f7e383d

Please sign in to comment.